diff --git a/gcc/testsuite/gcc.target/i386/pr101950-2.c b/gcc/testsuite/gcc.target/i386/pr101950-2.c index 896f1b464146bdaee643fc5f737744c88305c3d9..ccc361e3a46a8f80e498a05b6bbbce0e303a9596 100644 --- a/gcc/testsuite/gcc.target/i386/pr101950-2.c +++ b/gcc/testsuite/gcc.target/i386/pr101950-2.c @@ -6,14 +6,19 @@ /* { dg-final { scan-assembler-times "\txor\[ql]\t" 2 } } */ /* { dg-final { scan-assembler-times "\tsar\[ql]\t|\tcltd" 2 } } */ +/* Use pointers to avoid register allocation difference due to argument + and return register being different and the difference in selecting eax + for one the result of the xor vs selecting rdi due to the order of the + shift vs the not shift. */ + int -foo (long x) +foo (long *x) { - return __builtin_clrsbl (x); + return __builtin_clrsbl (*x); } int -bar (int x) +bar (int *x) { - return __builtin_clrsb (x); + return __builtin_clrsb (*x); }