aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2009-08-14 11:36:45 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2009-08-14 11:36:45 +0000
commit94aca67aaf3c0e615ca0ddbac528662fcdd9bb2a (patch)
treeb41e90fd1c1d11baf0a372b1c1e94004a325de3a /gcc/reload1.c
parent1262fd02b65bb037b36551b91df729bace07ba46 (diff)
downloadgcc-94aca67aaf3c0e615ca0ddbac528662fcdd9bb2a.zip
gcc-94aca67aaf3c0e615ca0ddbac528662fcdd9bb2a.tar.gz
gcc-94aca67aaf3c0e615ca0ddbac528662fcdd9bb2a.tar.bz2
re PR rtl-optimization/41064 (build breakage for cris-elf building newlib, ICE in extract_insn, from r150726)
PR rtl-optimization/41064 * reload1.c (reload_as_needed): Don't call extract_insn for known invalid replacements after calling validate_replace_rtx_group and verify_changes. From-SVN: r150751
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 41b436b..7900841 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -4312,10 +4312,15 @@ reload_as_needed (int live_known)
n = verify_changes (0);
/* We must also verify that the constraints
- are met after the replacement. */
- extract_insn (p);
+ are met after the replacement. Make sure
+ extract_insn is only called for an insn
+ where the replacements were found to be
+ valid so far. */
if (n)
- n = constrain_operands (1);
+ {
+ extract_insn (p);
+ n = constrain_operands (1);
+ }
/* If the constraints were not met, then
undo the replacement, else confirm it. */