Initial shrink-wrapping patch

Richard Henderson rth@redhat.com
Thu Sep 15 01:48:00 GMT 2011


On 09/13/2011 08:36 AM, Bernd Schmidt wrote:
> On 09/13/11 15:05, Richard Sandiford wrote:
>> It just feels like checking for trap_if or turning off cross-jumping
>> are working around problems in the representation of shrink-wrapped
>> functions.  There should be something in the IL to say that those
>> two blocks cannot be merged for CFI reasons. 
> 
> There is - JUMP_LABELs and such, and the simple_return vs return
> distinction. This works for essentially all the interesting cases. The
> problem here is that we don't have a jump as the last insn. So how about
> the solution in crossjumping as below?
> 
>> Maybe two flags on
>> the basic block to say whether they start (resp. end) with the
>> "wrapped" version of the CFI?  (Which unfortunately would need
>> to be checked explicitly.)
> 
> I think that's overdesigning it, and it breaks as soon as something
> discards the bb info (reorg...) or puts a label in the middle of a
> prologue or epilogue.  Keeping that up-to-date would be much more
> fragile than just manually dealing with the few cases where we can't
> tell what's going on.
> 
>> OTOH, if another reviewer thinks that's unreasnable, I'll happily
>> defer to them.
> 
> Cc'ing rth for a second opinion...

It feels hacky, but I don't have anything better to suggest.
I think the patch is ok.


r~



More information about the Gcc-patches mailing list