From 6cad67d2d0789487217a2091c2f14d48f9e1ad6b Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sun, 31 Dec 1995 19:32:57 -0700 Subject: hard-reg-set.h (losing_caller_save_reg_set): Declare. * hard-reg-set.h (losing_caller_save_reg_set): Declare. * regclass.c (losing_caller_save_reg_set): Define. (init_reg_sets_1): Initialize losing_caller_save_reg_set. * global.c (find_reg): Avoid caller-saving registers in LOSING_CALLER_SAVE_REGS if it's defined. * local-alloc.c (find_free_reg): Avoid caller-saving registers in losing_caller_save_reg_set. (CLASS_LIKELY_SPILLED_P): Delete definition. Moved into regs.h. * regs.h (CLASS_LIKELY_SPILLED_P): Define if not already defined. From-SVN: r10926 --- gcc/global.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc/global.c') diff --git a/gcc/global.c b/gcc/global.c index e9941e6..78da99b 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -1085,7 +1085,14 @@ find_reg (allocno, losers, alt_regs_p, accept_call_clobbered, retrying) && CALLER_SAVE_PROFITABLE (allocno_n_refs[allocno], allocno_calls_crossed[allocno])) { - find_reg (allocno, losers, alt_regs_p, 1, retrying); + HARD_REG_SET new_losers; + if (! losers) + CLEAR_HARD_REG_SET (new_losers); + else + COPY_HARD_REG_SET (new_losers, losers); + + IOR_HARD_REG_SET(new_losers, losing_caller_save_reg_set); + find_reg (allocno, new_losers, alt_regs_p, 1, retrying); if (reg_renumber[allocno_reg[allocno]] >= 0) { caller_save_needed = 1; -- cgit v1.1