1 /* PR debug/54519 */
2 /* { dg-do run } */
3 /* { dg-options "-g" } */
4
5 __attribute__((noinline, noclone)) void
fn1(int x)6 fn1 (int x)
7 {
8 __asm volatile ("" : "+r" (x) : : "memory");
9 }
10
11 static int
fn2(int x,int y)12 fn2 (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 __attribute__((noinline, noclone)) int
fn3(int x,int y)28 fn3 (int x, int y)
29 {
30 return fn2 (x, y) + y;
31 }
32
33 __attribute__((noinline, noclone)) int
fn4(int x,int y)34 fn4 (int x, int y)
35 {
36 return fn2 (x, y) + y;
37 }
38
39 int
main()40 main ()
41 {
42 fn3 (6, 25);
43 fn4 (4, 117);
44 return 0;
45 }
46