Commit c965e187 by Richard Biener Committed by Richard Biener

re PR middle-end/59993 (ICE: SSA corruption)

2014-01-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/59993
	* tree-ssa-forwprop.c (associate_pointerplus): Check we
	can propagate form the earlier stmt and avoid the transform
	when the intermediate result is needed.

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

From-SVN: r207316
parent 5f71f3d3
2014-01-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/59993
* tree-ssa-forwprop.c (associate_pointerplus): Check we
can propagate form the earlier stmt and avoid the transform
when the intermediate result is needed.
2014-01-30 Alangi Derick <alangiderick@gmail.com>
* README.Portability: Fix typo.
......
2014-01-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/59993
* gcc.dg/torture/pr59993.c: New testcase.
2014-01-30 Richard Sandiford <rdsandiford@googlemail.com>
* g++.dg/vect/pr33426-ivdep.cc, g++.dg/vect/pr33426-ivdep-2.cc,
......
/* { dg-do compile } */
#include <setjmp.h>
extern int optind;
jmp_buf jump_buf;
int
main (int argc, char **argv)
{
foo (jump_buf, setjmp(jump_buf));
argv += optind;
bar(argv[1]);
}
......@@ -2926,11 +2926,13 @@ associate_pointerplus (gimple_stmt_iterator *gsi)
/* Associate (p +p off1) +p off2 as (p +p (off1 + off2)). */
ptr = gimple_assign_rhs1 (stmt);
off1 = gimple_assign_rhs2 (stmt);
if (TREE_CODE (ptr) != SSA_NAME)
if (TREE_CODE (ptr) != SSA_NAME
|| !has_single_use (ptr))
return false;
def_stmt = SSA_NAME_DEF_STMT (ptr);
if (!is_gimple_assign (def_stmt)
|| gimple_assign_rhs_code (def_stmt) != POINTER_PLUS_EXPR)
|| gimple_assign_rhs_code (def_stmt) != POINTER_PLUS_EXPR
|| !can_propagate_from (def_stmt))
return false;
ptr = gimple_assign_rhs1 (def_stmt);
off2 = gimple_assign_rhs2 (def_stmt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment