aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-06-08 10:17:05 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-06-08 08:17:05 +0000
commit136778e9b41c1d1d095f9e2e74b7255c7ce4f415 (patch)
tree0e96cb17f5cc87934c7398356043594977cc1ab6 /gcc
parent4b5e2dbc974abfe763a79e37ec7f37993a306d94 (diff)
downloadgcc-136778e9b41c1d1d095f9e2e74b7255c7ce4f415.zip
gcc-136778e9b41c1d1d095f9e2e74b7255c7ce4f415.tar.gz
gcc-136778e9b41c1d1d095f9e2e74b7255c7ce4f415.tar.bz2
re PR rtl-optimization/26449 (ICE in loop invariant motion)
PR rtl-optimization/26449 * loop-invariant.c (move_invariant_reg): Fail if force_operand fails. * gcc.dg/pr26449.c: New test. From-SVN: r114481
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop-invariant.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr26449.c15
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a44f7d..237393d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-07 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/26449
+ * loop-invariant.c (move_invariant_reg): Fail if force_operand fails.
+
2006-06-07 Andrew MacLeod <amacleod@redhat.com>
PR middle-end/27793
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index 026af40..cf22949 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -1178,6 +1178,11 @@ move_invariant_reg (struct loop *loop, unsigned invno)
{
start_sequence ();
op = force_operand (SET_SRC (set), reg);
+ if (!op)
+ {
+ end_sequence ();
+ goto fail;
+ }
if (op != reg)
emit_move_insn (reg, op);
seq = get_insns ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3e03145..78cbebc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-07 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/26449
+ * gcc.dg/pr26449.c: New test.
+
2006-06-07 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/27601
diff --git a/gcc/testsuite/gcc.dg/pr26449.c b/gcc/testsuite/gcc.dg/pr26449.c
new file mode 100644
index 0000000..1a0bdad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr26449.c
@@ -0,0 +1,15 @@
+/* { dg-do compile { target i?86-*-* } } */
+/* { dg-options "-O1 -ftree-vectorize -march=pentium4 -std=c99" } */
+
+void matmul_i4 (int bbase_yn, int xcount)
+{
+ int x;
+ int * restrict dest_y;
+ const int * abase_n;
+
+ for (x = 0; x < xcount; x++)
+ {
+ dest_y[x] += abase_n[x] * bbase_yn;
+ }
+}
+