aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-06-09 08:06:17 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-06-09 08:06:17 +0000
commit2bdb7f56ff0290100875208f07bceb33e404e6e4 (patch)
tree1c9438171754f53aef737acbf0f87e7015271b7c /gcc
parentd819fedb34471ab3378e2dfd45a88b76ed68a91e (diff)
downloadgcc-2bdb7f56ff0290100875208f07bceb33e404e6e4.zip
gcc-2bdb7f56ff0290100875208f07bceb33e404e6e4.tar.gz
gcc-2bdb7f56ff0290100875208f07bceb33e404e6e4.tar.bz2
re PR tree-optimization/66413 (ICE at -Os and above with -g enabled on x86_64-linux-gnu)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr66413.c61
-rw-r--r--gcc/tree-inline.c2
4 files changed, 72 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a9554c5..6550f7c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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
* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
Rename virtual operands.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e62eaba..5c21d29 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..0ca57d7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr66413.c
@@ -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;
+}
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 242026c..1fa5dab 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -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)
{