This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PR 34998: Tracking of subreg liveness in global.c and ra-conflict.c


>>>>> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]