https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115977
--- Comment #4 from A. Wilcox (awilfox) <awilfox at adelielinux dot org> ---
I don't see how that tracks. I think -ffp-contract=off is changing the upper
passes enough that the optimiser no longer trips over it, similar to how
-mcpu=970 affects it. Checking the tree dumps and assembler diffs between
revisions, I don't see any floating-point operations being significantly
altered. I do, however, see this in the esra pass (- is good compiler, + is
bad):
- SR.112_259 = MEM <float> [(struct vec *)&D.6847];
- SR.113_248 = MEM <float> [(struct vec *)&D.6847 + 4B];
- SR.114_239 = MEM <float> [(struct vec *)&D.6847 + 8B];
- axis_224 = SR.112_259;
- axis$4_204 = SR.113_248;
- axis$8_194 = SR.114_239;
+ axis = D.6846;
+ axis_259 = MEM <float> [(struct vec *)&D.6846];
+ axis$4_248 = MEM <float> [(struct vec *)&D.6846 + 4B];
+ axis$8_239 = MEM <float> [(struct vec *)&D.6846 + 8B];
+ D.6846 ={v} {CLOBBER(eol)};
I am unfortunately not skilled enough in the internals of GCC to understand
what has gone wrong here.