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);
 }