[PATCH 3/6] Allow jumps in epilogues

Richard Henderson rth@redhat.com
Wed Mar 23 17:27:00 GMT 2011


On 03/23/2011 10:22 AM, Bernd Schmidt wrote:
> On 03/23/2011 06:19 PM, Richard Henderson wrote:
>> 	body
>> 	body
>> 	restore r1	XXX
>> 	restore r2	XXX
>> 	jmp L2		XXX
>>
>> L1:	body		YYY
>> 	body		YYY
>> 	restore r2
>>
>> L2:	restore r3
>> 	return
> 
>> In general, with shrink-wrapping, we can have essentially arbitrary
>> differences in unwind info between blocks that are sequential.
> 
> I don't think this can actually happen with the current implementation.
> There is only one prologue, and all epilogues (the normal one and the
> sibcall epilogues) match it exactly. I don't believe we can generate
> code as in the example above, both before and after my patch.

Um.. then what's this "allow jumps in epilogues" thing of which you speak?
If there's a jump, then it goes somewhere, and branches over something.
I see no constraints on what that something might be.

Could you give an example of a transformation that is allowed by this?



r~



More information about the Gcc-patches mailing list