This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PR 34998: Tracking of subreg liveness in global.c and ra-conflict.c
- From: David Edelsohn <dje at watson dot ibm dot com>
- To: Richard Sandiford <rsandifo at nildram dot co dot uk>, Ian Lance Taylor <iant at google dot com>
- Cc: gcc-patches at gcc dot gnu dot org, bergner at vnet dot ibm dot com, vmakarov at redhat dot com, zadeck at naturalbridge dot com, seongbae dot park at gmail dot com
- Date: Wed, 30 Jan 2008 22:15:54 -0500
- Subject: Re: PR 34998: Tracking of subreg liveness in global.c and ra-conflict.c
- References: <878x29aqdn.fsf@firetop.home> <m3d4rkws8y.fsf@localhost.localdomain> <87ir1c9yuc.fsf@firetop.home>
>>>>> Richard Sandiford writes:
> So I think the patch really does model the intended behaviour of the
> pseudo-register access in this case. E.g. if we allocate an SImode
> pseudo FOO to two HImode registers on a 32-bit target, a set of
> (subreg:HI (reg:SI FOO) ...) really should clobber both of the HImode
> registers. ("..." is either 0 or 2, depending on endianness. The other
> value isn't valid.)
The analysis and patch seem to contradict changes made to the
PowerPC port in 2000:
http://gcc.gnu.org/ml/gcc-patches/2000-01/msg00899.html
http://gcc.gnu.org/ml/gcc-patches/2000-01/msg00921.html
A pattern implemented
(set (subreg:SI (reg:DI foo)) (reg:SI bar))
and the lifetime analysis of the period decided the pseudo was live since
the beginning. Geoff Keating and RTH agreed that the SUBREG should be
changed to an UNSPEC specifically to express that the pattern killed the
entire pseudo. Maybe the semantics have changed / been clarified in the
intervening time.
David