aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2014-05-15 16:54:29 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2014-05-15 16:54:29 +0200
commit9d2681a399507e4a33e95e3f738e7328b8abcc90 (patch)
tree1037af05ec7d87e6a879da0df3212d229ba44cc4
parent8fa53379d501bfb9d9c13acb59fa368d7e6f7fc1 (diff)
downloadgcc-9d2681a399507e4a33e95e3f738e7328b8abcc90.zip
gcc-9d2681a399507e4a33e95e3f738e7328b8abcc90.tar.gz
gcc-9d2681a399507e4a33e95e3f738e7328b8abcc90.tar.bz2
re PR tree-optimization/61090 (ICE in build_ref_for_offset)
2014-05-15 Martin Jambor <mjambor@suse.cz> PR tree-optimization/61090 * tree-sra.c (sra_modify_expr): Pass the current gsi to build_ref_for_model. testsuite/ * gcc.dg/tree-ssa/pr61090.c: New test. From-SVN: r210476
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr61090.c21
-rw-r--r--gcc/tree-sra.c2
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4b818f4..960927c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-05-15 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/61090
+ * tree-sra.c (sra_modify_expr): Pass the current gsi to
+ build_ref_for_model.
+
2014-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.c (arm_option_override): Use the SCHED_PRESSURE_MODEL
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ae25792..0a43475 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-15 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/61090
+ * gcc.dg/tree-ssa/pr61090.c: New test.
+
2014-05-15 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/61158
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr61090.c b/gcc/testsuite/gcc.dg/tree-ssa/pr61090.c
new file mode 100644
index 0000000..fff2895
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr61090.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+struct i {
+ int c;
+};
+
+static int
+p(struct i a)
+{
+ return 0;
+}
+
+void
+h(void)
+{
+ struct i z[] = {{ 0 }};
+ int e[] = {};
+ int x;
+ e[0] = p(z[x]) + z[x].c;
+}
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 72c485b..ef6c966 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -2812,7 +2812,7 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator *gsi, bool write)
{
tree ref;
- ref = build_ref_for_model (loc, orig_expr, 0, access, NULL, false);
+ ref = build_ref_for_model (loc, orig_expr, 0, access, gsi, false);
if (write)
{