------- Comment #15 from jsjodin at gcc dot gnu dot org 2007-10-11 14:17 ------- (In reply to comment #14) > BTW, without this patch > http://gcc.gnu.org/ml/gcc-patches/2007-07/msg02122.html > there is no ICE and the loop gets vectorized. > > Ira >
It may be that the test to go through an SSA_NAME in split_constant_offset is still not strict enough. I was having problem knowing what to check for. See thread: http://gcc.gnu.org/ml/gcc-patches/2007-07/msg01294.html --- trunk/gcc/tree-data-ref.c (revision 126953) +++ trunk/gcc/tree-data-ref.c (working copy) @@ -565,6 +565,27 @@ split_constant_offset (tree exp, tree *v return; } + case SSA_NAME: + { + tree def_stmt = SSA_NAME_DEF_STMT (exp); + if (TREE_CODE (def_stmt) == GIMPLE_MODIFY_STMT) + { + tree def_stmt_rhs = GIMPLE_STMT_OPERAND (def_stmt, 1); + + if (!TREE_SIDE_EFFECTS (def_stmt_rhs) + && EXPR_P (def_stmt_rhs) + && !REFERENCE_CLASS_P (def_stmt_rhs)) + { + split_constant_offset (def_stmt_rhs, &var0, &off0); + var0 = fold_convert (type, var0); + *var = var0; + *off = off0; + return; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33680