diff options
author | Richard Guenther <rguenther@suse.de> | 2009-04-04 09:30:34 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-04-04 09:30:34 +0000 |
commit | cd15ad3e604aaa74991b72dcbf74ab61fe2fc9c4 (patch) | |
tree | 1617183c57efeb10cdd2fb7fe0e429fd90f87af2 | |
parent | 462f32622d5f7ba2efef6d145e57c41053178c38 (diff) | |
download | gcc-cd15ad3e604aaa74991b72dcbf74ab61fe2fc9c4.zip gcc-cd15ad3e604aaa74991b72dcbf74ab61fe2fc9c4.tar.gz gcc-cd15ad3e604aaa74991b72dcbf74ab61fe2fc9c4.tar.bz2 |
re PR tree-optimization/39636 (ICE in gimple_assign_rhs_code, at gimple.h:1837, 435.gromacs fails to build)
2009-04-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39636
* tree-ssa-forwprop.c
(forward_propagate_addr_into_variable_array_index): Check for
GIMPLE_ASSIGN before accessing the rhs code.
* gcc.c-torture/compile/pr39636.c: New testcase.
From-SVN: r145532
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr39636.c | 11 | ||||
-rw-r--r-- | gcc/tree-ssa-forwprop.c | 3 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 817d483..18fb789 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-04-04 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/39636 + * tree-ssa-forwprop.c + (forward_propagate_addr_into_variable_array_index): Check for + GIMPLE_ASSIGN before accessing the rhs code. + 2009-04-03 Jason Merrill <jason@redhat.com> * stor-layout.c (set_sizetype): Set TYPE_CANONICAL. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 45e0c11..3e322f5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-04-04 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/39636 + * gcc.c-torture/compile/pr39636.c: New testcase. + 2009-04-03 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/39607 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr39636.c b/gcc/testsuite/gcc.c-torture/compile/pr39636.c new file mode 100644 index 0000000..ceddbb3 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr39636.c @@ -0,0 +1,11 @@ +typedef float real; +typedef real rvec[3]; +void calc_dx2dx(real *, real *); +void phi_sr(int nj,rvec x[],int k) +{ + int i,j; + for(i=0; (i<nj-1); i++) + for(j=i+1; (j<nj); j++) + if (k) + calc_dx2dx(x[i],x[j]); +} diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index c3e7d432..ff6bda0 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -668,7 +668,8 @@ forward_propagate_addr_into_variable_array_index (tree offset, tunit)) != NULL_TREE) { gimple offset_def2 = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (offset_def)); - if (gimple_assign_rhs_code (offset_def2) == MULT_EXPR + if (is_gimple_assign (offset_def2) + && gimple_assign_rhs_code (offset_def2) == MULT_EXPR && TREE_CODE (gimple_assign_rhs2 (offset_def2)) == INTEGER_CST && tree_int_cst_equal (gimple_assign_rhs2 (offset_def2), tunit)) { |