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