2 /* { dg-options "-O2 -fdump-tree-sra" } */
3 /* { dg-require-effective-target indirect_jumps } */
13 static jmp_buf the_jmpbuf
;
14 volatile short vs
= 0;
16 long * volatile pbuf
= (long *) &buf
;
18 static void __attribute__((noinline
))
19 crazy_alloc_s (struct S
*p
)
21 int s
= p
->c
? p
->c
* 2 : 16;
28 longjmp (the_jmpbuf
, 1);
31 __builtin_memcpy (b
, p
->b
, p
->c
);
38 long __attribute__((noipa
))
49 if (setjmp (the_jmpbuf
))
53 crazy_alloc_s (&stack
);
59 long l
= stack
.b
[--stack
.c
];
63 for (int i
= 0; i
< 4; i
++)
65 if (stack
.s
<= stack
.c
+ 1)
66 crazy_alloc_s (&stack
);
68 stack
.b
[stack
.c
++] = l
;
76 int main (int argc
, char **argv
)
87 /* { dg-final { scan-tree-dump-not "Created a replacement for stack offset" "sra"} } */