aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-03-11 12:44:27 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-03-11 12:44:27 +0000
commit3900dc09bc97e0b8a1dd4653d85072d825a1318f (patch)
treed5dc2078a5126e9a870d54fbbf5d300d3dc82247 /gcc/reload1.c
parent8b790721e4e1a1692efd6e526a92c2b617a6f2a2 (diff)
downloadgcc-3900dc09bc97e0b8a1dd4653d85072d825a1318f.zip
gcc-3900dc09bc97e0b8a1dd4653d85072d825a1318f.tar.gz
gcc-3900dc09bc97e0b8a1dd4653d85072d825a1318f.tar.bz2
reload.1c (delete_address_reloads_1): Check for reloads of CURRENT_INSN even if it sets DST.
* reload.1c (delete_address_reloads_1): Check for reloads of CURRENT_INSN even if it sets DST. From-SVN: r25701
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 9109614..9d13325 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -8135,10 +8135,9 @@ delete_address_reloads_1 (dead_insn, x, current_insn)
}
if (GET_CODE (i2) == JUMP_INSN)
break;
- if (reg_set_p (dst, PATTERN (i2)))
- break;
/* If DST is still live at CURRENT_INSN, check if it is used for
- any reload. */
+ any reload. Note that even if CURRENT_INSN sets DST, we still
+ have to check the reloads. */
if (i2 == current_insn)
{
for (j = n_reloads - 1; j >= 0; j--)
@@ -8151,6 +8150,8 @@ delete_address_reloads_1 (dead_insn, x, current_insn)
spill_hard_reg. There is no easy way to tell this, so we
have to scan till the end of the basic block. */
}
+ if (reg_set_p (dst, PATTERN (i2)))
+ break;
}
}
delete_address_reloads_1 (prev, SET_SRC (set), current_insn);