re PR tree-optimization/66413 (ICE at -Os and above with -g enabled on x86_64-linux...
authorRichard Biener <rguenther@suse.de>
Tue, 9 Jun 2015 08:06:17 +0000 (08:06 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 9 Jun 2015 08:06:17 +0000 (08:06 +0000)
2015-06-09  Richard Biener  <rguenther@suse.de>

PR middle-end/66413
* tree-inline.c (insert_init_debug_bind): Unshare value.

* gcc.dg/torture/pr66413.c: New testcase.

From-SVN: r224267

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

index a9554c516b5629b5f5ddf724542e62ee7549a489..6550f7c9bf382f486a383b3ab979a92158c3d65d 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-09  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/66413
+       * tree-inline.c (insert_init_debug_bind): Unshare value.
+
 2015-06-09  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/66396
index e62eaba08ba5858ad08600616b8ce2fe6ec9245e..5c21d29fcd872cdcb544f1cf85d8b1d752360568 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-09  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/66413
+       * gcc.dg/torture/pr66413.c: New testcase.
+
 2015-06-09  Alexandre Oliva <aoliva@redhat.com>
 
        * gcc.dg/guality/pr54200.c: Add -fno-tree-coalesce-vars.
diff --git a/gcc/testsuite/gcc.dg/torture/pr66413.c b/gcc/testsuite/gcc.dg/torture/pr66413.c
new file mode 100644 (file)
index 0000000..0ca57d7
--- /dev/null
@@ -0,0 +1,61 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-g" } */
+
+int a, b, c, d, i, j, q, *e, *h, *k, *r, **p = &e;
+const int *f, **n = &f;
+static int g;
+
+void
+fn1 (int p1)
+{
+  c = p1;
+}
+
+static int *
+fn2 (int *p1, const int *p2)
+{
+  if (g)
+    n = &p2;
+  *n = p2;
+  int o[245];
+  fn1 (o != p2);
+  return p1;
+}
+
+static int *
+fn3 ()
+{
+  int s[54], *t = &s[0], u = 0, v = 1;
+  h = &v;
+  q = 1;
+  for (; q; q++)
+    {
+      int *w[] = { &u };
+      for (; v;)
+       return *p;
+    }
+  *r = *t + b >= 0;
+  return *p;
+}
+
+static int
+fn4 (int *p1)
+{
+  int *l[2], **m[7];
+  for (; i < 1; i++)
+    for (; j < 1; j++)
+      m[i * 70] = &l[0];
+  k = fn3 ();
+  fn2 (0, p1);
+  if ((m[0] == 0) & a)
+    for (;;)
+      ;
+  return 0;
+}
+
+int
+main ()
+{
+  fn4 (&d);
+  return 0;
+}
index 242026c86e4af39789e0833b9c9add79961b070e..1fa5dabb56a5279c338884ea90f92ee5b17c98f5 100644 (file)
@@ -3021,7 +3021,7 @@ insert_init_debug_bind (copy_body_data *id,
        base_stmt = gsi_stmt (gsi);
     }
 
-  note = gimple_build_debug_bind (tracked_var, value, base_stmt);
+  note = gimple_build_debug_bind (tracked_var, unshare_expr (value), base_stmt);
 
   if (bb)
     {