]> gcc.gnu.org Git - gcc.git/commitdiff
re PR debug/43557 (ICE with -combine and -g)
authorJakub Jelinek <jakub@redhat.com>
Wed, 31 Mar 2010 08:39:22 +0000 (10:39 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 31 Mar 2010 08:39:22 +0000 (10:39 +0200)
PR debug/43557
* cfgexpand.c (expand_debug_expr): Handle VOIDmode mode like
BLKmode.

* gcc.dg/pr43557-1.c: New test.
* gcc.dg/pr43557-2.c: New file.

From-SVN: r157852

gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr43557-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr43557-2.c [new file with mode: 0644]

index bd2182106529e37651df8f09077029e3ee11ce8a..44cc91a2fa30eb3575f4c468f96997ff8c302916 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43557
+       * cfgexpand.c (expand_debug_expr): Handle VOIDmode mode like
+       BLKmode.
+
 2010-03-31  Jie Zhang  <jie@codesourcery.com>
 
        PR 43562
index a797af9a167936b644d191a4845ba40d8b68f428..eeb5c739b787f841864c191a2351eafd84c1aaaa 100644 (file)
@@ -2358,7 +2358,8 @@ expand_debug_expr (tree exp)
          /* If op0 is not BLKmode, but BLKmode is, adjust_mode
             below would ICE.  While it is likely a FE bug,
             try to be robust here.  See PR43166.  */
-         || mode == BLKmode)
+         || mode == BLKmode
+         || (mode == VOIDmode && GET_MODE (op0) != VOIDmode))
        {
          gcc_assert (MEM_P (op0));
          op0 = adjust_address_nv (op0, mode, 0);
index 70ab74b81c9250acd7db87357633df4244999a99..1dcabdfeaf62d8cde5e8ab6465d9bba485821a07 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-31  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43557
+       * gcc.dg/pr43557-1.c: New test.
+       * gcc.dg/pr43557-2.c: New file.
+
 2010-03-31  Jie Zhang  <jie@codesourcery.com>
 
        PR 43562
diff --git a/gcc/testsuite/gcc.dg/pr43557-1.c b/gcc/testsuite/gcc.dg/pr43557-1.c
new file mode 100644 (file)
index 0000000..8c7d0b4
--- /dev/null
@@ -0,0 +1,16 @@
+/* PR debug/43557 */
+/* { dg-do compile } */
+/* { dg-options "--combine -g -O2" } */
+/* { dg-additional-sources "pr43557-2.c" } */
+
+struct S
+{
+  int v;
+} g;
+
+void
+f1 (void)
+{
+  struct S *s = &g;
+  s->v = 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr43557-2.c b/gcc/testsuite/gcc.dg/pr43557-2.c
new file mode 100644 (file)
index 0000000..890e68e
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR debug/43557 */
+/* { dg-do compile } */
+
+extern struct S g;
+
+void
+f2 (void)
+{
+  &g;
+}
This page took 0.078339 seconds and 5 git commands to generate.