From: Richard Guenther Date: Mon, 26 Jul 2010 12:48:37 +0000 (+0000) Subject: re PR tree-optimization/45071 (ICE: tree check: expected ssa_name, have integer_cst... X-Git-Tag: releases/gcc-4.6.0~5426 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e093ffe3c293fb22b4d9715159b604f29bacdcb5;p=thirdparty%2Fgcc.git re PR tree-optimization/45071 (ICE: tree check: expected ssa_name, have integer_cst in inhibit_phi_insertion, at tree-ssa-pre.c:3278 with -ftree-pre -ftree-vectorize) 2010-07-26 Richard Guenther PR tree-optimization/45071 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Always adjust op->opcode. * gcc.dg/pr45071.c: New testcase. From-SVN: r162534 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcf57dfad502..c03ebf90205d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-07-26 Richard Guenther + + PR tree-optimization/45071 + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Always + adjust op->opcode. + 2010-07-26 Naveen.H.S * config/v850/lib1funcs.asm (save_r2_r31, return_r2_r31, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b9de6e42ae4e..f1fde6887e54 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-07-26 Richard Guenther + + PR tree-optimization/45071 + * gcc.dg/pr45071.c: New testcase. + 2010-07-26 Tobias Burnus PR fortran/45066 diff --git a/gcc/testsuite/gcc.dg/pr45071.c b/gcc/testsuite/gcc.dg/pr45071.c new file mode 100644 index 000000000000..d1715db1b731 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr45071.c @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O -ftree-vrp -ftree-vectorize" } */ + +struct A +{ + int i; +}; + +struct B +{ + struct A a; +}; + +extern void f4 (void *); + +inline void +f3 (struct A *a) +{ + f4 (a); + while (a->i); +} + +static inline void +f2 (struct B *b) +{ + f3 (&b->a); +} + +void +f1 () +{ + struct B *b = 0; + f2 (b); +} diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index c99c8a8f3719..cfd22dbedba1 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1050,11 +1050,9 @@ vn_reference_maybe_forwprop_address (VEC (vn_reference_op_s, heap) **ops, else mem_op->off = -1; if (TREE_CODE (op->op0) == SSA_NAME) - { - op->op0 = SSA_VAL (op->op0); - if (TREE_CODE (op->op0) != SSA_NAME) - op->opcode = TREE_CODE (op->op0); - } + op->op0 = SSA_VAL (op->op0); + if (TREE_CODE (op->op0) != SSA_NAME) + op->opcode = TREE_CODE (op->op0); /* And recurse. */ if (TREE_CODE (op->op0) == SSA_NAME)