From: Bernd Schmidt Date: Thu, 30 Nov 2000 12:23:12 +0000 (+0000) Subject: Backport a change to the 2.95 branch X-Git-Tag: prereleases/gcc-2.95.3-test1~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e97a6c5230da07e49e8472e18813fc716fb29fb5;p=thirdparty%2Fgcc.git Backport a change to the 2.95 branch From-SVN: r37886 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52ae16e8b57c..16dde7299e9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2000-11-30 Bernd Schmidt + 2000-01-12 Bernd Schmidt + * reload1.c (reload_reg_unavailable): New static variable. + (reload_reg_free_p): Test it. + (reload_reg_free_for_value_p): Test it instead of reload_reg_used. + (choose_reload_regs_init): Compute it. + Thu Jul 6 18:30:36 2000 Richard Kenner * reload.c (push_reload): When seeing if can reuse a register, check extra registers against widest of INMODE and OUTMODE. diff --git a/gcc/reload1.c b/gcc/reload1.c index c57670663fe6..b49d9925551f 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4580,6 +4580,8 @@ reload_reg_class_lower (r1p, r2p) /* The following HARD_REG_SETs indicate when each hard register is used for a reload of various parts of the current insn. */ +/* If reg is unavailable for all reloads. */ +static HARD_REG_SET reload_reg_unavailable; /* If reg is in use as a reload reg for a RELOAD_OTHER reload. */ static HARD_REG_SET reload_reg_used; /* If reg is in use for a RELOAD_FOR_INPUT_ADDRESS reload for operand I. */ @@ -4802,8 +4804,8 @@ reload_reg_free_p (regno, opnum, type) { int i; - /* In use for a RELOAD_OTHER means it's not available for anything. */ - if (TEST_HARD_REG_BIT (reload_reg_used, regno)) + if (TEST_HARD_REG_BIT (reload_reg_used, regno) + || TEST_HARD_REG_BIT (reload_reg_unavailable, regno)) return 0; switch (type) @@ -5211,7 +5213,7 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum, available as spill registers, including hard registers that are earlyclobbered in asms. As a temporary measure, reject anything in reload_reg_used. */ - if (TEST_HARD_REG_BIT (reload_reg_used, regno)) + if (TEST_HARD_REG_BIT (reload_reg_unavailable, regno)) return 0; if (out == const0_rtx) @@ -5673,7 +5675,7 @@ choose_reload_regs (chain) CLEAR_HARD_REG_SET (reload_reg_used_in_outaddr_addr[i]); } - IOR_COMPL_HARD_REG_SET (reload_reg_used, chain->used_spill_regs); + COMPL_HARD_REG_SET (reload_reg_unavailable, chain->used_spill_regs); #if 0 /* Not needed, now that we can always retry without inheritance. */ /* See if we have more mandatory reloads than spill regs.