https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106609

--- Comment #2 from Sébastien Michelland <sebastien.michell...@ens-lyon.fr> ---
Yes there are delay slots for all branches except bt and bf, so here bt.s, jsr
and rts all have one. (-fno-delayed-branches avoids them but that doesn't
affect the bad optimization in this case.)

Adding -fno-schedule-insns -fno-schedule-insns2 doesn't help; the test and load
are still eliminated. In fact, I negated the entirety of -Q --help=optimizers
and still got an incorrect output.

It seems that the problem lies further downstream. I dumped various RTL stages
and -fdump-rtl-mach is the first stage where the comparison to 0 is gone, if
the order in the manual is anything to go by. Since I have both functional and
non-functional outputs from different RTL stages, I'm switching the component
to rtl-optimization.

Reply via email to