[LLVMdev] About unwind...

Gordon Henriksen gordonhenriksen at mac.com
Sun Dec 16 07:33:36 PST 2007


Incidentally, the first item is discussed in the introductory text on http://llvm.org/docs/ExceptionHandling.html#itanium

- Gordon

On Dec 16, 2007, at 10:27, Gordon Henriksen <gordonhenriksen at mac.com>  
wrote:

> Hi Sebastien.
>
> On Dec 15, 2007, at 19:00, Sebastien Loisel <loisel at temple.edu> wrote:
>
>> I have started playing with LLVM a little bit and I am thinking of  
>> using it to write some linear algebra software for my class.
>>
>> I was reading the documentation and I am very excited by the  
>> possibilities of "invoke" and "unwind". I have two questions.
>>
>> 1) How does the performance of "invoke" compare to the performance  
>> of "call" on a typical x86, 32 or 64 bit platform? How many isns  
>> and such?
>
> With the exception of the "setjmp/longjmp" codegen that LLVM  
> supports, invoke has no dynamic cost. It is used to implement C++  
> "zero-cost" exception-handling, which combine the dynamic execution  
> stack itself and static metadata emitted by the compiler in order to  
> implement unwinding.
>
>> 2) When I unwind, the stack gets popped but it would make sense to  
>> pass some data to the exception handler. I guess I could use a  
>> global variable for this, but is there a way to do it on the stack?  
>> (Wouldn't that make more sense also?)
>
> Indeed, you should use a global (or thread-local global).
>
> - Gordon
>
> Sent from my iPhone...
>  on United flight 339
>    parked for the third hour on the tarmac
>      at Logan International Airport
>        still waiting for the nor'easter to blow on through
>          (but I'm not bitter)



More information about the llvm-dev mailing list