re PR tree-optimization/77514 (ICE in VN_INFO_GET, at tree-ssa-sccvn.c:406 w/ -O2 (and above))

2016-09-15  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/77514
	* tree-ssa-pre.c (create_expression_by_pieces): Handle garbage
	only forced_stmts sequence.

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

From-SVN: r240153
This commit is contained in:
Richard Biener 2016-09-15 07:17:45 +00:00 committed by Richard Biener
parent 46aa019a01
commit d08615f28f
4 changed files with 47 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-09-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/77514
* tree-ssa-pre.c (create_expression_by_pieces): Handle garbage
only forced_stmts sequence.
2016-09-15 Kugan Vivekanandarajah <kuganv@linaro.org>
* tree-ssanames.h (FOR_EACH_SSA_NAME): New.

View File

@ -1,3 +1,8 @@
2016-09-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/77514
* gcc.dg/torture/pr77514.c: New testcase.
2016-09-14 Jakub Jelinek <jakub@redhat.com>
PR c++/77549

View File

@ -0,0 +1,21 @@
/* { dg-do compile } */
void
m1 (char l0, char e8, int hw)
{
char *rs = &l0;
yu:
l0 = 1;
while (l0 != 0)
{
l0 = -l0;
l0 += (*rs ^ (l0 &= 1));
}
for (;;)
{
if (hw != 0)
goto yu;
rs = &e8;
}
}

View File

@ -2879,7 +2879,21 @@ create_expression_by_pieces (basic_block block, pre_expr expr,
gimple_seq_discard (forced_stmts);
return folded;
}
/* Likewise if we simplified to sth not queued for insertion. */
bool found = false;
gsi = gsi_start (forced_stmts);
for (; !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple *stmt = gsi_stmt (gsi);
tree forcedname = gimple_get_lhs (stmt);
if (forcedname == folded)
found = true;
}
if (! found)
{
gimple_seq_discard (forced_stmts);
return folded;
}
gcc_assert (TREE_CODE (folded) == SSA_NAME);
/* If we have any intermediate expressions to the value sets, add them