From 5583e33da85818e2b25b5995e6d503a7444b030a Mon Sep 17 00:00:00 2001 From: James E Wilson Date: Sun, 30 Nov 2003 06:32:57 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/final.c | 13 ------------- gcc/reload1.c | 11 +++++++++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a236a6add9f..22908dedea9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-11-29 James E Wilson + + * final.c (final_start_function): Delete code for NON_SAVING_SETJMP. + * reload1.c (reload): Re-add it here. + 2003-11-30 Alan Modra * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Don't diff --git a/gcc/final.c b/gcc/final.c index e93f4bbd3be..820cb680ab2 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1336,19 +1336,6 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file, this_is_asm_operands = 0; -#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) - { - int i; - - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - if (!call_used_regs[i]) - regs_ever_live[i] = 1; - } -#endif - last_filename = locator_file (prologue_locator); last_linenum = locator_line (prologue_locator); diff --git a/gcc/reload1.c b/gcc/reload1.c index 64dc0be4bf4..b234a6a1707 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) -- 2.30.2