[PATCH] Disallow COMPOUND_EXPR in set_rhs

Daniel Berlin dberlin@dberlin.org
Thu Sep 23 16:09:00 GMT 2004


On Sep 23, 2004, at 11:13 AM, Jakub Jelinek wrote:

> On Tue, Sep 21, 2004 at 07:33:50AM -0400, Diego Novillo wrote:
>> On Tue, 2004-09-21 at 00:44, Richard Henderson wrote:
>>
>>>> +	  if (!set_rhs (stmtp, result))
>>>
>>> Although really set_rhs is not a particularly good check for whether
>>> or not the substitution is valid.
>>>
>> Indeed.  set_rhs should check expressions other than unary and binary.
>
> At least COMPOUND_EXPR which fold_builtin will return in several 
> occassions,
> e.g. when optimizing sprintf (x, "%s", "string").
> I saw an ICE today where tree-ssa-dom.c (optimize_stmt) called 
> fold_stmt
> and created non-gimple statement.
>
> 2004-09-23  Jakub Jelinek  <jakub@redhat.com>
>
> 	* tree-ssa-propagate.c (set_rhs): Fail if EXPR is COMPOUND_EXPR.
>
> --- gcc/tree-ssa-propagate.c.jj	2004-09-18 13:49:35.000000000 +0200
> +++ gcc/tree-ssa-propagate.c	2004-09-23 17:02:41.483400229 +0200
> @@ -575,6 +575,8 @@ set_rhs (tree *stmt_p, tree expr)
>        if (!is_gimple_val (TREE_OPERAND (expr, 0)))
>  	return false;
>      }
> +  else if (TREE_CODE_CLASS (code) == COMPOUND_EXPR)
> +    return false;

Uh, COMPOUND_EXPR is not a class :)

>
>    switch (TREE_CODE (stmt))
>      {
>
>
> 	Jakub



More information about the Gcc-patches mailing list