[dataflow] partial register handling

Paolo Bonzini paolo.bonzini@lu.unisi.ch
Fri May 25 16:47:00 GMT 2007


> But I don't think that's enough, with the current loop it would strip the 
> subreg of a multiword subreg and there is some logic in df_ref_record, 
> which wouldn't see it. An alternative might be:
> 
>   while (GET_CODE (dst) == STRICT_LOW_PART
> 	 || GET_CODE (dst) == ZERO_EXTRACT)
>     {
>       flags |= DF_REF_READ_WRITE | DF_REF_PARTIAL;
>       loc = &XEXP (dst, 0);
>       dst = *loc;
>     }
> 
>   if (df_read_modify_subreg_p (dst))
>     flags |= DF_REF_READ_WRITE | DF_REF_PARTIAL;
> 
> That would only leave singleword subreg and paradoxical subreg, if they 
> should require anything.

This seems also correct, if you want to test it.

> One could also restrict STRICT_LOW_PART to subregs, as after reload the 
> subreg part is usually gone.

No, a strict_low_part of a reg is also a partial set.

Paolo



More information about the Gcc mailing list