[LLVMdev] LLVM code emittion and C++ compiler compatibily

Žiga Osolin ziga.osolin at gimb.org
Mon Nov 6 11:20:00 PST 2006


> On Mon, 6 Nov 2006, [ISO-8859-2] Žiga Osolin wrote:
>> The other thing are the return types. I don't know (it is probably even
>> not documented) how VC++ returns smart pointer (boost::smart_ptr),
>> or any other type (other basics types, such as int, float, ... are
>> probably returned into EAX as with GCC). Once again, we may
>> need specific return values per arhitecture.
>
> It is possible, but it would be extremely ugly.  I strongly recommend 
> sticking to C features when JITing code.
>
> -Chris
>
The problem is this is not possible, because what I would compile to JIT 
are actual classes. The integration of C++ and JIT code is very 
important; for example we would create our own vtbls with JIT-ed code 
addresses as the function call target.

There is one quite simple approach that I might take (I just came up 
with it). I could create special really small wrappers for each of these 
JIT-ed function, that would make the conversion to the common format 
(being either GCC or VC++). This wrapper could also extract all return 
values correctly and pass them to native C++ code as required. I think 
this would be the neatest solution, but would require a speed penalty. 
The actual wrapper code could be OS dependant:)

Is there any interest for llvm to have such features, such as 
integration directly to GCC compiled code, or VC++ compiled code (at the 
same time)? Because maybe it could be the part of llvm instead of 
baadengine, if you wish of course.

Regards,
Žiga





More information about the llvm-dev mailing list