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.