| /* { dg-do run } */ |
| /* { dg-options "-g -fno-var-tracking-assignments" } */ |
| /* { dg-skip-if "" { *-*-* } { "*" } { "-O0" "-O1" } } */ |
| |
| typedef __UINTPTR_TYPE__ uintptr_t; |
| |
| __attribute__((noinline, noclone)) int |
| sub (int a, int b) |
| { |
| return a - b; |
| } |
| |
| typedef struct { uintptr_t pa; uintptr_t pb; } fatp_t |
| __attribute__ ((aligned (2 * __alignof__ (uintptr_t)))); |
| |
| __attribute__((noinline, noclone)) void |
| foo (fatp_t str, int a, int b) |
| { |
| int i = sub (a, b); |
| if (i == 0) /* BREAK */ |
| foo (str, a - 1, b); |
| } |
| |
| int |
| main (void) |
| { |
| fatp_t ptr = { 31415927, 27182818 }; |
| foo (ptr, 1, 2); |
| return 0; |
| } |
| |
| /* { dg-final { gdb-test 20 "str.pa" "31415927" } } */ |
| /* { dg-final { gdb-test 20 "str.pb" "27182818" } } */ |