/* 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; | |
} |