]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/52472 (ICE: in convert_debug_memory_address, at cfgexpand.c:2491)
authorSenthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
Thu, 5 Jun 2014 18:34:43 +0000 (18:34 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 5 Jun 2014 18:34:43 +0000 (12:34 -0600)
PR target/52472
* cfgexpand.c (expand_debug_expr): Use address space of nested
TREE_TYPE for ADDR_EXPR and MEM_REF.

PR target/52472
* gcc.target/avr/pr52472.c: New test.

From-SVN: r211288

gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/pr52472.c [new file with mode: 0644]

index 94a30d45e8bad14c8ef05c56dcf6c7609c50210a..1e2c4f3a6175265287fecbf97b17e3fc89226a9c 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-05  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       PR target/52472
+       * cfgexpand.c (expand_debug_expr): Use address space of nested
+       TREE_TYPE for ADDR_EXPR and MEM_REF.
+
 2014-06-05  Jeff Law  <law@redhat.com>
 
        PR tree-optimization/61289
index 8b0e466a52f25ecd0d210775bc5f0d59fd9bf92d..e161cb76f2e62f78d0b3b9ce85c1483f56fa75d0 100644 (file)
@@ -3941,10 +3941,7 @@ expand_debug_expr (tree exp)
          op0 = plus_constant (inner_mode, op0, INTVAL (op1));
        }
 
-      if (POINTER_TYPE_P (TREE_TYPE (exp)))
-       as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp)));
-      else
-       as = ADDR_SPACE_GENERIC;
+      as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))));
 
       op0 = convert_debug_memory_address (targetm.addr_space.address_mode (as),
                                          op0, as);
@@ -4467,7 +4464,7 @@ expand_debug_expr (tree exp)
          return NULL;
        }
 
-      as = TYPE_ADDR_SPACE (TREE_TYPE (exp));
+      as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp)));
       op0 = convert_debug_memory_address (mode, XEXP (op0, 0), as);
 
       return op0;
index 5fb5103deb85e8bfcb171a0c5902b26751a8c462..06b1e334090c86b3128dd7e8f4ea1c6653a0ef08 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-05  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       PR target/52472
+       * gcc.target/avr/pr52472.c: New test.
+
+
 2014-06-05  Jeff Law  <law@redhat.com>
 
        PR tree-optimization/61289
diff --git a/gcc/testsuite/gcc.target/avr/pr52472.c b/gcc/testsuite/gcc.target/avr/pr52472.c
new file mode 100644 (file)
index 0000000..701cfb4
--- /dev/null
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -g -Wno-pointer-to-int-cast" } */
+
+/* This testcase exposes PR52472. expand_debug_expr mistakenly
+   considers the address space of data to be generic, and
+   asserts that PSImode pointers aren't valid in the generic 
+   address space. */
+
+extern const __memx unsigned data[][10];
+
+unsigned long ice (void)
+{
+  unsigned long addr32;
+
+  return addr32 = ((unsigned long) data);
+}