summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-14 11:36:45 +0000
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-14 11:36:45 +0000
commit4f426d851259dd51965830bd6ea4e7bdeb5c7b47 (patch)
treeb41e90fd1c1d11baf0a372b1c1e94004a325de3a /gcc
parent17e313b073e2af7095139a8ee2950892fc4997b2 (diff)
downloadgcc-4f426d851259dd51965830bd6ea4e7bdeb5c7b47.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150751 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/reload1.c11
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e48cbcdfdba..0862182fe51 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-08-14 Hans-Peter Nilsson <hp@axis.com>
+
+ 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.
+
2009-08-14 Uros Bizjak <ubizjak@gmail.com>
PR target/41019
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 41b436b8891..7900841a239 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. */