[LLVMdev] RFC: Exception Handling Rewrite
Jakob Stoklund Olesen
jolesen at apple.com
Thu Aug 4 16:40:59 PDT 2011
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.
Right.
My intention here is to mark the CALL instruction as a terminator:
BB1:
%R0 = COPY %vreg0; 1st arg
%R1 = COPY %vreg1; 2nd arg
CALL foo
Successors: BB2, BB3
BB2:
Live-in: %R0
%vreg2 = COPY %R0; Return value
BR BB7
BB3: LANDING PAD
Live-in: %R0, %R1
%vreg10 = COPY %R0; Ex addr
%vreg11 = COPY %R1; EH selector
BB2 must be a layout successor of BB1, but we can already handle that.
This code layout also clearly marks the call that may unwind: It is the terminator with an edge to a landing pad. That means we can get rid of the EH_LABELS we currently use to mark the call.
/jakob
More information about the llvm-dev
mailing list