This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]