1 /* PR debug/54519 */ 2 /* { dg-do run } */ 3 /* { dg-options "-g" } */ 4 5 __attribute__((noinline, noclone)) void fn1(int x)6fn1 (int x) 7 { 8 __asm volatile ("" : "+r" (x) : : "memory"); 9 } 10 11 static int fn2(int x,int y)12fn2 (int x, int y) 13 { 14 if (y) 15 { 16 fn1 (x); /* { dg-final { gdb-test 17 "x" "6" } } */ 17 fn1 (x); /* { dg-final { gdb-test 17 "y" "25" } } */ 18 fn1 (x); 19 fn1 (x); 20 y = -2 + x; 21 y = y * y * y + y; 22 fn1 (x + y); /* { dg-final { gdb-test 22 "y" "68" } } */ 23 } 24 return x; 25 } 26 27 int (*p) (int, int) = fn2; 28 29 int main()30main () 31 { 32 __asm volatile ("" : : : "memory"); 33 int (*q) (int, int) = p; 34 __asm volatile ("" : : : "memory"); 35 q (6, 25); 36 q (4, 117); 37 q (0, 0); 38 return 0; 39 } 40