[LLVMdev] RFC: Exception Handling Rewrite
Peter Lawrence
peterl95124 at sbcglobal.net
Thu Aug 4 16:24:57 PDT 2011
Andrew,
yes, my brain-bad, soon after I hit the Send button
I realized it
is the InvokeInst that starts the lifetime of those hard-registers, not
the LandingpadInst, but you beat me to the reply.
-Peter Lawrence.
On Aug 4, 2011, at 4:16 PM, Andrew Trick wrote:
> Hi Peter,
>
> Thanks for pointing this out. Some us who are concerned with
> codegen have discussed the problem. Although the details aren't
> decided, you can be sure that at the MachineInstr level we won't
> have a landindpadInst to model liveness of exception values. Any
> physical registers set by the personality function will be
> considered live immediately after the call on the unwind path.
>
> -Andy
>
> On Aug 4, 2011, at 4:04 PM, Peter Lawrence wrote:
>
>> Chris,
>> it is goodness that the LandingpadInst will be pinned
>> to the beginning
>> of a BasicBlock,... except for the possibility of PHINode
>> instructions that _must_
>> come even earlier.?.
>>
>> I can't exactly put my finger on what's going to go wrong with this,
>> but it sure smells fishy...
>>
>>
>> my current understanding is that the LandingpadInst will "define"
>> some hard
>> registers which will be used by following code to switch to the
>> corresponding
>> catch-clause
>>
>> the lifetimes of these hard registers ostensibly starts at the
>> LandingpadInst,
>> but for purposes of PHI lowering and Register Allocation they
>> _must_ actually
>> start at the beginning of the BasicBlock -- since that is where
>> control flow will
>> return to from the _Unwind_RaiseException / __gcc_personality_v0
>> calls,
>> and it is the _Unwind_ and _personality_ functions that physically
>> set those
>> hard registers, not the "LandingpadInst".
>>
>> Somehow PHI lowering and register allocation need to be prohibited
>> from
>> using those hard registers for spill code at the beginning of a
>> "landing pad block",
>> but I don't see how that will "fall out" of the current design.?.
>>
>>
>>
>> -Peter Lawrence.
>>
>>
>>
>>
>> On Aug 3, 2011, at 12:35 AM, llvmdev-request at cs.uiuc.edu wrote:
>>
>>>
>>> I agree with Bill in this case. The reason for landingpad to be
>>> an instruction is a) make it clear that it is magic in several
>>> ways (e.g. pinned to the start of a block), and b) so that
>>> LandingPadInst can have a bunch of useful accessors on it.
>>>
>>> -Chris
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110804/277ca8cf/attachment.html>
More information about the llvm-dev
mailing list