OSDN Git Service

PR debug/43557
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Mar 2010 08:39:22 +0000 (08:39 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Mar 2010 08:39:22 +0000 (08:39 +0000)
* cfgexpand.c (expand_debug_expr): Handle VOIDmode mode like
BLKmode.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157852 138bc75d-0d04-0410-961f-82ee72b054a4

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 bd21821..44cc91a 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
 2010-03-31  Jie Zhang  <jie@codesourcery.com>
 
        PR 43562
index a797af9..eeb5c73 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.  */
          /* 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);
        {
          gcc_assert (MEM_P (op0));
          op0 = adjust_address_nv (op0, mode, 0);
index 70ab74b..1dcabdf 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
 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;
+}