llvm-d

Moritz Maxeiner moritz at ucworks.org
Sat Mar 23 03:16:10 PDT 2013


On Saturday, 23 March 2013 at 09:30:07 UTC, Jens Mueller wrote:
> Moritz Maxeiner wrote:
>> A couple of more things I forgot to mention:
>> 
>> - You will need to additionally add bindings for all the 
>> LLVMInitialize"TARGET_NAME"{TargetInfo,Target,TargetMC,AsmParser,AsmPrinter,Disassembler}
>> functions. They reside inside the target libraries and not 
>> inside
>> llvm-c, which is why only translating the C API won't get you 
>> them.
>> The LLVMInitializeNativeTarget function , which is necessary 
>> to use
>> LLVM for jitting - otherwise you'll only have access to
>> interpreting, which is horribly slow - uses them, but it is a 
>> static
>> inline function and as such does not get exposed because LLVM 
>> builds
>> with the option to hide all inline functions. That is not a 
>> problem
>> for C, as this function gets defined in the header, but for D 
>> it is
>> a big problem, because you cannot access 
>> LLVMInitializeNativeTarget.
>> You need to recreate it in D by using all the functions it
>> references. Of course, you'll also have to accomodate the fact 
>> that
>> these referenced functions may or may not be compiled in 
>> depending
>> on which target where selected when compiling LLVM.
>
> Do you happen to know why these functions are not declared in 
> the header
> files. I mean when using the C interface in C I wouldn't even 
> know that
> these functions exist.

I suspect it is because of LLVM's internal structure. Each 
supported target is presented by its own directory and they are 
afaict mutually independent from one another, "so their 
initialiation routines should be part of them themselves" I would 
guess, but I don't know, sorry.
Also, when using the C interface in C there is little need to 
know them because they get encapsulated in 
LLVMInitializeAllTargets and LLVMInitializeNativeTarget.

>
> I think I leave this up to a higher layer API.
> Deimos should provide an API that resembles the C api whenever 
> possible.

Okay, I'll put one into llvm-d one then.

-- Moritz


More information about the Digitalmars-d-announce mailing list