| /* 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; |
| } |