------- Comment #17 from rakdver at kam dot mff dot cuni dot cz  2007-10-15 
15:02 -------
Subject: Re:  [4.3 Regression] ICE when compilling elbg.c from ffmpeg
(vectorizer)

> This patch fixes the ICE and doesn't cause regressions in the vectorizer
> testsuite:
> 
> Index: tree-data-ref.c
> ===================================================================
> --- tree-data-ref.c     (revision 129292)
> +++ tree-data-ref.c     (working copy)
> @@ -571,11 +571,16 @@ split_constant_offset (tree exp, tree *v
>         if (TREE_CODE (def_stmt) == GIMPLE_MODIFY_STMT)
>           {
>             tree def_stmt_rhs = GIMPLE_STMT_OPERAND (def_stmt, 1);
> +            tree arr = NULL_TREE;
> +
> +            if (TREE_CODE (def_stmt_rhs) == ADDR_EXPR)
> +              arr = TREE_OPERAND (def_stmt_rhs, 0);
> 
>             if (!TREE_SIDE_EFFECTS (def_stmt_rhs)
>                 && EXPR_P (def_stmt_rhs)
>                 && !REFERENCE_CLASS_P (def_stmt_rhs)
> -               && !get_call_expr_in (def_stmt_rhs))
> +               && !get_call_expr_in (def_stmt_rhs)
> +                && (!arr || TREE_THIS_NOTRAP (arr)))

you would have to be more careful here, as arr does not have to be
array_ref, so applying TREE_THIS_NOTRAP to it may cause ICEs.
Anyway, this change does not make sense to me, I need to check
what this PR is about, but there is no reason for split_constant_offset
to special-case ADDR_EXPR's this way.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33680

Reply via email to