mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 23:31:21 +08:00
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
This commit is contained in:
parent
5f71f3d3e0
commit
c965e18748
@ -1,3 +1,10 @@
|
||||
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.
|
||||
|
@ -1,3 +1,8 @@
|
||||
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,
|
||||
|
13
gcc/testsuite/gcc.dg/torture/pr59993.c
Normal file
13
gcc/testsuite/gcc.dg/torture/pr59993.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* { 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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user