This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix ICE in gen_lsm_tmp_name (PR tree-optimization/49712)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]