
[英]How does GCC (not clang) make this optimization deciding that a store to one struct member couldn't affect a member of another?
这是有问题的代码: clang-14 -O3 产生: gcc 11.2 -O3 产生几乎相同的结果,但遗漏了一个mov : Clang读取D字段两次,而GCC只读取一次并重新使用。 显然 GCC 并不害怕第一个赋值改变任何对第二个赋值有影响的东西。 我试图了解是否/何时允许这样做。 当 U ...