This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix ICE in gen_lsm_tmp_name (PR tree-optimization/49712)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 12 Jul 2011 11:16:24 +0200
- Subject: [PATCH] Fix ICE in gen_lsm_tmp_name (PR tree-optimization/49712)
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
Now that LIM is scheduled after IVOPTS too, it needs to be prepared to
handle TARGET_MEM_REFs IVOPTS creates.
Tested on x86_64-linux, committed to trunk as obvious.
2011-07-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/49712
* tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle TARGET_MEM_REF.
* gcc.c-torture/execute/pr49712.c: New test.
--- gcc/tree-ssa-loop-im.c.jj 2011-05-17 13:32:20.000000000 +0200
+++ gcc/tree-ssa-loop-im.c 2011-07-12 08:48:22.000000000 +0200
@@ -1982,6 +1982,7 @@ gen_lsm_tmp_name (tree ref)
switch (TREE_CODE (ref))
{
case MEM_REF:
+ case TARGET_MEM_REF:
gen_lsm_tmp_name (TREE_OPERAND (ref, 0));
lsm_tmp_name_add ("_");
break;
--- gcc/testsuite/gcc.c-torture/execute/pr49712.c.jj 2011-07-12 08:52:12.000000000 +0200
+++ gcc/testsuite/gcc.c-torture/execute/pr49712.c 2011-07-12 08:51:44.000000000 +0200
@@ -0,0 +1,28 @@
+/* PR tree-optimization/49712 */
+
+int a[2], b, c, d, e;
+
+void
+foo (int x, int y)
+{
+}
+
+int
+bar (void)
+{
+ int i;
+ for (; d <= 0; d = 1)
+ for (i = 0; i < 4; i++)
+ for (e = 0; e; e = 1)
+ ;
+ return 0;
+}
+
+int
+main ()
+{
+ for (b = 0; b < 2; b++)
+ while (c)
+ foo (a[b] = 0, bar ());
+ return 0;
+}
Jakub