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]

Improve regcprop find_oldest_value_reg


While syncing data between my laptop and my desktop, I found a 
lost patch.  I believe the original context was mn10300, where
SP may only be copied to ADDRESS_REGS, but not DATA_REGS, and
SP may not be involved in any other arithmetic besides SP+=IMM.
Thus when computing something like

	p0 = &local0
	p1 = &local1
we get
	(set A0 SP)
	(set P0 IMM)
	(set P0 (plus P0 A0))
	(set A1 SP)
	(set P1 IMM)
	(set P1 (plus P1 A1))

The regcprop chain created in this context will always begin
with SP, which is not a member of GENERAL_REGS, which would
immediately exit the function rather than discovering that A0
is the second oldest copy and is of the proper class.  After
this substitution, we can find that the A1=SP copy is dead.

I've bootstrapped this patch on x86_64-linux for sanity and
committed it, though of course no effect was expected there.


r~

Attachment: z
Description: Text document


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