/* PR rtl-optimization/45695 */ | |
extern void abort (void); | |
__attribute__((noinline)) void | |
g (int x) | |
{ | |
asm volatile ("" : "+r" (x)); | |
} | |
__attribute__((noinline)) int | |
f (int a, int b, int d) | |
{ | |
int r = -1; | |
b += d; | |
if (d == a) | |
r = b - d; | |
g (b); | |
return r; | |
} | |
int | |
main (void) | |
{ | |
int l; | |
asm ("" : "=r" (l) : "0" (0)); | |
if (f (l + 0, l + 1, l + 4) != -1) | |
abort (); | |
if (f (l + 4, l + 1, l + 4) != 1) | |
abort (); | |
return 0; | |
} |