diff options
author | James E Wilson <wilson@specifixinc.com> | 2003-11-30 06:32:57 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2003-11-29 22:32:57 -0800 |
commit | 5583e33da85818e2b25b5995e6d503a7444b030a (patch) | |
tree | 4853bd6350a58c11315ec3c4f350bd5963479644 /gcc/reload1.c | |
parent | 1ff8f81ab3d8242b575a2d2c533f357042c2e8d1 (diff) | |
download | gcc-5583e33da85818e2b25b5995e6d503a7444b030a.zip gcc-5583e33da85818e2b25b5995e6d503a7444b030a.tar.gz gcc-5583e33da85818e2b25b5995e6d503a7444b030a.tar.bz2 |
Make NON_SAVING_SETJMP usable again.
* final.c (final_start_function): Delete code for NON_SAVING_SETJMP.
* reload1.c (reload): Re-add it here.
From-SVN: r74052
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 64dc0be..b234a6a 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -673,6 +673,17 @@ reload (rtx first, int global) if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i)) regs_ever_live[i] = 1; +#ifdef NON_SAVING_SETJMP + /* A function that calls setjmp should save and restore all the + call-saved registers on a system where longjmp clobbers them. */ + if (NON_SAVING_SETJMP && current_function_calls_setjmp) + { + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + if (! call_used_regs[i]) + regs_ever_live[i] = 1; + } +#endif + /* Find all the pseudo registers that didn't get hard regs but do have known equivalent constants or memory slots. These include parameters (known equivalent to parameter slots) |