re PR debug/66432 (libgomp.c/appendix-a/a.29.1.c -O2 -g: type mismatch between an...
authorJakub Jelinek <jakub@redhat.com>
Sat, 21 Nov 2015 08:24:13 +0000 (09:24 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 21 Nov 2015 08:24:13 +0000 (09:24 +0100)
PR debug/66432
* tree-inline.c (copy_debug_stmt): If
gimple_debug_source_bind_get_value is DECL_ORIGIN of a PARM_DECL
in decl_debug_args, don't call remap_gimple_op_r on it.

* gcc.dg/debug/pr66432.c: New test.

From-SVN: r230702

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/debug/pr66432.c [new file with mode: 0644]
gcc/tree-inline.c

index 1b7c5d238222d42c14c0db154e8c87cc215d67d0..9bc928f1cf0994380cd7da763a9b237b32b8a2dc 100644 (file)
@@ -1,3 +1,10 @@
+2015-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/66432
+       * tree-inline.c (copy_debug_stmt): If
+       gimple_debug_source_bind_get_value is DECL_ORIGIN of a PARM_DECL
+       in decl_debug_args, don't call remap_gimple_op_r on it.
+
 2015-11-07  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-icf.c (sem_item::add_type): Do not look for TYPE_CANONICAL;
index eca66283285e23092d8f7aebf86a6617b13155bb..8eaa6574829687cac89f7905d47b0d7da576277c 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/66432
+       * gcc.dg/debug/pr66432.c: New test.
+
 2015-11-20  Ian Lance Taylor  <iant@google.com>
 
        PR go/66406
diff --git a/gcc/testsuite/gcc.dg/debug/pr66432.c b/gcc/testsuite/gcc.dg/debug/pr66432.c
new file mode 100644 (file)
index 0000000..cf36799
--- /dev/null
@@ -0,0 +1,19 @@
+/* PR debug/66432 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+extern void baz (const char *, const char *) __attribute__ ((__noreturn__));
+
+void
+foo (int x, int y[x][x])
+{
+  if (x < 2)
+    baz ("", "");
+}
+
+void
+bar (void)
+{
+  int z[2][2] = { { 1, 2 }, { 3, 4 } };
+  foo (2, z);
+}
index 205c869b88e714bd71f1a35331e89dca88180abd..ebab1898fad4ab1d751830a3b2248a8ea376b731 100644 (file)
@@ -2864,8 +2864,6 @@ copy_debug_stmt (gdebug *stmt, copy_body_data *id)
   else if (gimple_debug_source_bind_p (stmt))
     {
       gimple_debug_source_bind_set_var (stmt, t);
-      walk_tree (gimple_debug_source_bind_get_value_ptr (stmt),
-                remap_gimple_op_r, &wi, NULL);
       /* When inlining and source bind refers to one of the optimized
         away parameters, change the source bind into normal debug bind
         referring to the corresponding DEBUG_EXPR_DECL that should have
@@ -2889,7 +2887,10 @@ copy_debug_stmt (gdebug *stmt, copy_body_data *id)
                    break;
                  }
            }
-       }      
+       }
+      if (gimple_debug_source_bind_p (stmt))
+       walk_tree (gimple_debug_source_bind_get_value_ptr (stmt),
+                  remap_gimple_op_r, &wi, NULL);
     }
 
   processing_debug_stmt = 0;