]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/50827 (ICE: RTL check: expected elt 0 type 'e' or 'u', have '0' (rtx...
authorJakub Jelinek <jakub@redhat.com>
Mon, 21 Nov 2011 21:07:19 +0000 (22:07 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 21 Nov 2011 21:07:19 +0000 (22:07 +0100)
PR debug/50827
* var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
macro instead of XEXP.

* gcc.dg/pr50827.c: New test.

From-SVN: r181597

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr50827.c [new file with mode: 0644]
gcc/var-tracking.c

index 17743d88ea5765ad5b51ed97ec8fdc61a159ce08..aea8611325b6dbfd615d8749842eb3c3a04fe973 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/50827
+       * var-tracking.c (loc_cmp): For ENTRY_VALUEs use ENTRY_VALUE_EXP
+       macro instead of XEXP.
+
 2011-11-21  Andreas Tobler  <andreast@fgznet.ch>
 
        * configure: Regenerate.
index b9ab57903866c87dcca33a3bd82c8755178d0efe..764575a449f9bd708f78558aa1f9741310cd7c2b 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/50827
+       * gcc.dg/pr50827.c: New test.
+
 2011-11-21  Ed Smith-Rowland  <3dw4rd@verizon.net>
 
        PR c++/50958
diff --git a/gcc/testsuite/gcc.dg/pr50827.c b/gcc/testsuite/gcc.dg/pr50827.c
new file mode 100644 (file)
index 0000000..5d258bf
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR debug/50827 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -funroll-loops" } */
+
+void
+foo (int w, int x, int *y, int *z)
+{
+  float f;
+  while (w--)
+    {
+      f = x;
+      if (y)
+       *y = (__INTPTR_TYPE__) y + w;
+      if (z)
+       *z = w;
+    }
+}
index 95bc02b183c6bd819f92f664190326ede1f353a4..4e07d25b54a923716a4caf8106bc5c79820783f8 100644 (file)
@@ -3008,7 +3008,7 @@ loc_cmp (rtx x, rtx y)
       if (GET_CODE (y) != ENTRY_VALUE)
        return 1;
       gcc_assert (GET_MODE (x) == GET_MODE (y));
-      return loc_cmp (XEXP (x, 0), XEXP (y, 0));
+      return loc_cmp (ENTRY_VALUE_EXP (x), ENTRY_VALUE_EXP (y));
     }
 
   if (GET_CODE (y) == ENTRY_VALUE)