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