From 8dddd002b0e059a7f8a6cd0147afea0d83188cac Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 13 Apr 1997 08:15:28 -0400 Subject: [PATCH] (reload): If function has nonlocal label, mark all caller-saved regs as used. From-SVN: r13863 --- gcc/reload1.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/reload1.c b/gcc/reload1.c index a7b4238d1b5..42fe5c7565c 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -589,10 +589,18 @@ reload (first, global, dumpfile) as homes for pseudo registers. This is done here rather than (eg) in global_alloc because this point is reached even if not optimizing. */ - for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) mark_home_live (i); + /* A function that receives a nonlocal goto must save all call-saved + registers. */ + if (current_function_has_nonlocal_label) + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + { + if (! call_used_regs[i] && ! fixed_regs[i]) + regs_ever_live[i] = 1; + } + for (i = 0; i < scratch_list_length; i++) if (scratch_list[i]) mark_scratch_live (scratch_list[i]);