The testcase used to fail on 64-bit, but it was disabled there. This patch makes it run there, and beefs up the checking of the generated code a bit.
Tested on powerpc64-linux *-m32,-m32/-mpowerpc64,-m64). Is this okay for trunk? Segher 2015-11-09 Segher Boessenkool <seg...@kernel.crashing.org> gcc/testsuite/ * gcc.target/powerpc/20050603-3.c: Don't restrict to ilp32. Do more tests for the expected generated code. --- gcc/testsuite/gcc.target/powerpc/20050603-3.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/20050603-3.c b/gcc/testsuite/gcc.target/powerpc/20050603-3.c index 0f328e1..4017d34 100644 --- a/gcc/testsuite/gcc.target/powerpc/20050603-3.c +++ b/gcc/testsuite/gcc.target/powerpc/20050603-3.c @@ -1,15 +1,19 @@ -/* { dg-do compile { target { ilp32 } } } */ +/* { dg-do compile } */ /* { dg-options "-O2" } */ -struct Q +struct Q { long x:20; long y:4; long z:8; }b; -/* This should generate a single rl[w]imi. */ +/* This should generate a single rl[wd]imi. */ void rotins (unsigned int x) { b.y = (x<<12) | (x>>20); } -/* { dg-final { scan-assembler-not "inm" } } */ +/* { dg-final { scan-assembler-not {\mrlwinm} } } */ +/* { dg-final { scan-assembler-not {\mrldic} } } */ +/* { dg-final { scan-assembler-not {\mrot[lr]} } } */ +/* { dg-final { scan-assembler-not {\ms[lr][wd]} } } */ +/* { dg-final { scan-assembler-times {\mrl[wd]imi} 1 } } */ -- 1.9.3