This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/33680] [4.3 Regression] ICE when compilling elbg.c from ffmpeg (vectorizer)
- From: "jsjodin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Oct 2007 14:17:34 -0000
- Subject: [Bug tree-optimization/33680] [4.3 Regression] ICE when compilling elbg.c from ffmpeg (vectorizer)
- References: <bug-33680-10490@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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