diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr31866.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr31866.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr31866.c b/gcc/testsuite/gcc.dg/pr31866.c new file mode 100644 index 000000000..4081c0e6a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr31866.c @@ -0,0 +1,28 @@ +/* PR tree-optimization/31866 */ +/* { dg-do compile { target alpha*-*-* cris-*-* crisv32-*-* i?86-*-* mmix-*-* powerpc*-*-* rs6000-*-* x86_64-*-* } } */ +/* { dg-options "-O2" } */ + +#if defined (__alpha__) +# define REG "$1" +#elif defined (__CRIS__) +# define REG "r10" +#elif defined (__i386__) +# define REG "%eax" +#elif defined (__MMIX__) +# define REG "$8" +#elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \ + || defined (__POWERPC__) || defined (PPC) || defined (_IBMR2) +# define REG "6" +#elif defined (__x86_64__) +# define REG "rax" +#endif + +long int +foo (void) +{ + unsigned long int s; + long int a = (long int) 0; + register long int r asm (REG) = a; + asm ("" : "=r" (s) : "0" (r)); + return s; +} |