[Bug rtl-optimization/54739] [4.8 regression] FAIL: gcc.dg/lower-subreg-1.c scan-rtl-dump subreg1 "Splitting reg"

uweigand at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Oct 1 12:17:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54739

--- Comment #3 from Ulrich Weigand <uweigand at gcc dot gnu.org> 2012-10-01 12:16:53 UTC ---
It seems all three of those targets have an "iordi3" pattern that triggers even
for 32-bit compiles.  In this case, the lower-subreg pass now no longer splits
the register, so that the DImode pattern is actually used.  (Prior to my patch,
the register would have been split anyway.)

The test case is intended to run on 32-bit targets where an ior:DI operation is
supposed to be split; it will now fail on targets with an iordi3 pattern.

For those targets, I guess it's up the target maintainers to decide whether:

- you want the iordi3 pattern to trigger since it gives better code than having
lower-subreg split the operation: in this case, just disable the test case for
your target (this is what I did for ARM)

or

- you'd really prefer to have lower-subreg split the operation, in which case
you should remove the iordi3 pattern



More information about the Gcc-bugs mailing list