summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-08-28 09:33:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-08-28 09:33:16 +0000
commit6df46f59d3bb38f31c6f7a5e06231944d18fa4dc (patch)
tree5400ed6141b3440c03a05df1e7f26f0d657388d2
parent36066262d9872fe449c384432e2f993939408cb5 (diff)
re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
2018-08-28 Richard Biener <rguenther@suse.de> PR tree-optimization/87117 * tree-ssa-operands.c (add_stmt_operand): STRING_CST may get virtual operands. (get_expr_operands): Handle STRING_CST like other decls. * gcc.dg/lvalue-5.c: New testcase. From-SVN: r263908
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/lvalue-5.c2
-rw-r--r--gcc/tree-ssa-operands.c3
4 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 33242431ac0..b8c25ba6ea7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-08-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/87117
+ * tree-ssa-operands.c (add_stmt_operand): STRING_CST may
+ get virtual operands.
+ (get_expr_operands): Handle STRING_CST like other decls.
+
2018-08-28 Martin Liska <mliska@suse.cz>
* tree.h: Update documentation of fndecl_built_in_p
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6d85561ef83..ddd365ecade 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/87117
+ * gcc.dg/lvalue-5.c: New testcase.
+
2018-08-27 Jeff Law <law@redhat.com>
PR tree-optimization/87110
diff --git a/gcc/testsuite/gcc.dg/lvalue-5.c b/gcc/testsuite/gcc.dg/lvalue-5.c
index 514f35ed802..ff3598ae8a7 100644
--- a/gcc/testsuite/gcc.dg/lvalue-5.c
+++ b/gcc/testsuite/gcc.dg/lvalue-5.c
@@ -1,7 +1,7 @@
/* Test assignment to elements of a string literal is a warning, not
an error. PR 27676. */
/* { dg-do compile } */
-/* { dg-options "-pedantic-errors" } */
+/* { dg-options "-O -pedantic-errors" } */
void
f (void)
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index eefe270c32d..7bff676cf52 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -515,7 +515,7 @@ add_stmt_operand (struct function *fn, tree *var_p, gimple *stmt, int flags)
{
tree var = *var_p;
- gcc_assert (SSA_VAR_P (*var_p));
+ gcc_assert (SSA_VAR_P (*var_p) || TREE_CODE (*var_p) == STRING_CST);
if (is_gimple_reg (var))
{
@@ -740,6 +740,7 @@ get_expr_operands (struct function *fn, gimple *stmt, tree *expr_p, int flags)
case VAR_DECL:
case PARM_DECL:
case RESULT_DECL:
+ case STRING_CST:
if (!(flags & opf_address_taken))
add_stmt_operand (fn, expr_p, stmt, flags);
return;