[LLVMdev] Integrating LLVM in an existing project

Chris Lattner sabre at nondot.org
Fri Apr 6 10:31:54 PDT 2007


On Fri, 6 Apr 2007, Nicolas Geoffray wrote:

> Like you say, it's not functional for non-calls instructions. Besides, 
> having to change all CalInst to InvokeInst is just too much pain in our 
> current vm.

ok.

> Actually, why is it missing? What's the difference between the code 
> generator and the JIT?

There are two things missing:

1. Testing and working out the set of remaining bugs
2. Extending the JIT to emit the EH tables to memory somewhere, and
    register them with the EH runtime.

> The thing is, I know very little on exception handling (our 
> setjmp/longjmp mechanism in our vms is functional but not really 
> optimized) and zip on LLVM.

I don't know, you seem to know something about the code generator :)

> I looked at Reid's notes for implementing #2, and I'm not sure I can 
> help without having a month or two (of spare time) to learn LLVM's 
> internals.

Right, I wouldn't suggest tackling this unless you are willing to see it 
through all the way.

> However, I'd be interested to look at how exception handling can be 
> implemented in the JIT. What's the current situation?

The static code generator works for many simple cases, but it is currently 
disabled.  To enable it, uncomment this line in 
llvm-gcc/gcc/llvm-convert.cpp:

//#define ITANIUM_STYLE_EXCEPTIONS


Based on that, you should be able to compile simple C++ codes that throw 
and catch exceptions.  The next step would be to make a .bc file, run it 
through the JIT, see how it explodes :)

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/



More information about the llvm-dev mailing list