This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH]: update to df for mainline.
- From: Michael Matz <matz at suse dot de>
- To: Daniel Berlin <dberlin at dberlin dot org>
- Cc: Bernd Schmidt <bernds_cb1 at t-online dot de>, Kenneth Zadeck <zadeck at naturalbridge dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Ian Lance Taylor <ian at airs dot com>, Vladimir Makarov <vmakarov at redhat dot com>, "F. Kenneth Zadeck" <kenneth dot zadeck at naturalbridge dot com>
- Date: Mon, 15 May 2006 18:04:34 +0200 (CEST)
- Subject: Re: [PATCH]: update to df for mainline.
- References: <44298EDB.5000804@naturalbridge.com> <4429BE69.5010307@t-online.de> <442AA1D3.4050007@naturalbridge.com> <446093C1.1090906@t-online.de> <4462310B.6070900@naturalbridge.com> <44625685.2050808@t-online.de> <446298C9.7090404@dberlin.org> <4462BAC7.7040207@dberlin.org>
Hi,
On Thu, 11 May 2006, Daniel Berlin wrote:
> Based on all of this, it's not actually clear to me that anyone really
> knows all the distinctions that we need to make.
For hardregs everything is easy, because you know exactly which hardregs
are going to be affected (via subreg_regno_offset()). For pseudos the
distinction between a full clobber or only a partial clobber is if the
size is less or larger than the word_size.
The end-effect is that writes to subregs clobber the whole word(s) where
the outer part is located. This means if the inner and outer modes need a
different number of words (as per UNITS_PER_WORD) you have a partial
write, i.e. one where parts of the inner reg are live through (namely
those words not affected by the outer subreg). If both inner and outer
need the same number of words it's a complete clobber.
That's at least how I implemented it once in the new-ra branch, how it's
currently implemented in GCC, and how it's documented.
Btw: paradoxical subreg writes are of course complete clobbers.
Ciao,
Michael.