[tree-ssa] fix latent & real bugs in BIT_FIELD_REFs

Diego Novillo dnovillo@redhat.com
Wed Mar 24 12:29:00 GMT 2004


On Wed, 2004-03-24 at 05:49, Bonzini wrote:

> Note that in that case BIT_FIELD_REFs can
> refer to both real and virtual operands, so get_virtual_var should check
> if the BIT_FIELD_REF refers to a non-register operand.  Luckily a test
> case was easy to build.
> 
Hmm, this is not safe, get_virtual_var should only be called for
aggregates, which are always non-registers.  The test for !is_gimple_reg
in get_virtual_var should not be necessary.

The rest looks OK.


> 	* gcc.dg/tree-ssa/20040324-1.c: New testcase.
> 
For future reference, you can generate diffs for new files by adding the
file with 'cvs add' and getting a diff with 'cvs diff -N'.

> @@ -1012,7 +1012,8 @@ get_expr_operands (tree stmt, tree *expr
>  	   will not be constant propagated because the two partial
>  	   definitions to 'a' will kill each other.  Note that SRA may be
>  	   able to fix this problem if 'a' can be scalarized.  */
> -  if (code == IMAGPART_EXPR || code == REALPART_EXPR || code == COMPONENT_REF)
> +  if (code == IMAGPART_EXPR || code == REALPART_EXPR || code == COMPONENT_REF
> +      || code == BIT_FIELD_REF)
>
OK, but format one test per line.


Diego.



More information about the Gcc-patches mailing list