[PR51447] restore the global reg var before returning from main
A runtime system might legitimately hold in rbx a value expected to be preserved across the call to main, but its use as a global register variable stops main from preserving it. for gcc/testsuite/ChangeLog PR rtl-optimization/51447 * gcc.c-torture/execute/pr51447.c (main): Preserve call-saved register.
This commit is contained in:
parent
a9eec9625e
commit
06ef9c119c
1 changed files with 6 additions and 0 deletions
|
@ -14,6 +14,9 @@ int
|
|||
main (void)
|
||||
{
|
||||
__label__ nonlocal_lab;
|
||||
#ifdef __x86_64__
|
||||
void *save = ptr;
|
||||
#endif
|
||||
__attribute__((noinline, noclone)) void
|
||||
bar (void *func)
|
||||
{
|
||||
|
@ -25,5 +28,8 @@ main (void)
|
|||
nonlocal_lab:
|
||||
if (ptr != &&nonlocal_lab)
|
||||
abort ();
|
||||
#ifdef __x86_64__
|
||||
ptr = save; /* Restore the call-saved register. */
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue