/* { dg-options "-O2" } */ /* PR85160 */ /* Originally, the "x >> 14" are CSEd away (eventually becoming a srawi instruction), and the two ANDs remain separate instructions because combine cannot deal with this. Now that combine knows how to combine two RTL insns into two, it manages to make this just the sum of two rlwinm instructions. */ int f(int x) { return ((x >> 14) & 6) + ((x >> 14) & 4); } /* { dg-final { scan-assembler-not {\msrawi\M} } } */