aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2005-07-14 21:11:39 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2005-07-14 21:11:39 +0000
commit704b6cb548b6e3ad7708729ec65d05fb8331f513 (patch)
treed0adc2d3afd0ad88987bfdfcdc295897729c0770 /gcc
parenta771c4b3eab2112264572e195832935b8e62c999 (diff)
downloadgcc-704b6cb548b6e3ad7708729ec65d05fb8331f513.zip
gcc-704b6cb548b6e3ad7708729ec65d05fb8331f513.tar.gz
gcc-704b6cb548b6e3ad7708729ec65d05fb8331f513.tar.bz2
re PR target/20126 (Inlined memcmp makes one argument null on entry)
2005-07-14 Alexandre Oliva <aoliva@redhat.com> Ulrich Weigand <uweigand@de.ibm.com> PR target/20126 * loop.c (loop_givs_rescan): Do not ICE if unable to reduce an IV in some insn. Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com> From-SVN: r102033
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/loop.c22
2 files changed, 24 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f2b2bd..1105727 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-07-14 Alexandre Oliva <aoliva@redhat.com>
+ Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR target/20126
+ * loop.c (loop_givs_rescan): Do not ICE if unable to reduce an IV
+ in some insn.
+
2005-07-14 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.h (TARGET_TPF_PROFILING): Add default definition.
diff --git a/gcc/loop.c b/gcc/loop.c
index ae06307..2686294 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -5514,11 +5514,23 @@ loop_givs_rescan (struct loop *loop, struct iv_class *bl, rtx *reg_map)
rtx reg, seq;
start_sequence ();
reg = force_reg (v->mode, *v->location);
- seq = get_insns ();
- end_sequence ();
- loop_insn_emit_before (loop, 0, v->insn, seq);
- if (!validate_change_maybe_volatile (v->insn, v->location, reg))
- gcc_unreachable ();
+ if (validate_change_maybe_volatile (v->insn, v->location, reg))
+ {
+ seq = get_insns ();
+ end_sequence ();
+ loop_insn_emit_before (loop, 0, v->insn, seq);
+ }
+ else
+ {
+ end_sequence ();
+ if (loop_dump_stream)
+ fprintf (loop_dump_stream,
+ "unable to reduce iv in insn %d\n",
+ INSN_UID (v->insn));
+ bl->all_reduced = 0;
+ v->ignore = 1;
+ continue;
+ }
}
}
else if (v->replaceable)