/* { dg-do run } */ /* { dg-options "-g" } */ /* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */ typedef __UINTPTR_TYPE__ uintptr_t; typedef struct { uintptr_t pa; uintptr_t pb; } fatp_t __attribute__ ((aligned (2 * __alignof__ (uintptr_t)))); __attribute__((noinline, noclone)) void clear_stack (void) { char a[128 * 1024 + 128]; __builtin_memset (a + 128 * 1024, 0, 128); } __attribute__((noinline, noclone)) void foo (fatp_t str, int count) { char a[128 * 1024]; if (count > 0) foo (str, count - 1); clear_stack (); count--; /* BREAK */ } int main (void) { fatp_t ptr = { 31415927, 27182818 }; foo (ptr, 1); return 0; } /* { dg-final { gdb-test 26 "str.pa" "31415927" } } */ /* { dg-final { gdb-test 26 "str.pb" "27182818" } } */