This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problems with a patch to improve dependence analysis


Hello,


> This worked for the most part (non-bootstrap, make check), but there are
> errors during bootstrap:
> 
> -----------------------------------------------------------------------
>  _r4.c: In function 'matmul_r4':
>  /home/jsjodin/Work/Project/GCC/Latest/trunk/libgfortran/generated/matm
>  ul
>  _r4.c:87: error: expected an SSA_NAME object
> /home/jsjodin/Work/Project/GCC/Latest/trunk/libgfortran/generated/matm
>  ul
>  _r4.c:87: error: in statement
>  # VUSE <SMT.37> { SMT.37 }
>  D.5431_402 = retarray_45(D)->data;
> ----------------------------------------------------------------------

the problem is that you have virtual operands outside of ssa form
(SMT.37) here.  You do not give enough information to tell why this
happens; my guess is that

> Index: trunk/gcc/tree-data-ref.c
> ===================================================================
> --- trunk/gcc/tree-data-ref.c	(revision 126419)
> +++ trunk/gcc/tree-data-ref.c	(working copy)
> @@ -566,6 +566,25 @@ 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))

this condition is not restrictive enough; try using

(EXPR_P (def_stmt_rhs) && !REFERENCE_CLASS_P (def_stmt_rhs))

Zdenek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]