diff options
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/pr51447.c')
-rw-r--r-- | SingleSource/Regression/C/gcc-c-torture/execute/pr51447.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/pr51447.c b/SingleSource/Regression/C/gcc-c-torture/execute/pr51447.c new file mode 100644 index 00000000..887ddb7d --- /dev/null +++ b/SingleSource/Regression/C/gcc-c-torture/execute/pr51447.c @@ -0,0 +1,29 @@ +/* PR rtl-optimization/51447 */ +/* { dg-require-effective-target label_values } */ +/* { dg-require-effective-target indirect_jumps } */ + +extern void abort (void); + +#ifdef __x86_64__ +register void *ptr asm ("rbx"); +#else +void *ptr; +#endif + +int +main (void) +{ + __label__ nonlocal_lab; + __attribute__((noinline, noclone)) void + bar (void *func) + { + ptr = func; + goto nonlocal_lab; + } + bar (&&nonlocal_lab); + return 1; +nonlocal_lab: + if (ptr != &&nonlocal_lab) + abort (); + return 0; +} |