llvm-d

Jens Mueller jens.k.mueller at gmx.de
Sat Mar 23 02:29:56 PDT 2013


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 have done so in llvm.c.functions of llvm-d so if you want you
> could use that as a reference.
> - When supporting multiple LLVM versions, we need to use the same
> method. I currently use a version flag, specifically

Yes. Handling different version of the same library hasn't been
addressed by Deimos.

> "-version=LLVM_X_Y" for LLVM X.Y release (including the trunk) and
> set two variables, a string "LLVM_VersionString" (for some C
> bindings internal stuff) and a float "LLVM_Version" (for static
> ifs). The relevant module is llvm.c.versions.

That's an option.

> - It would be nice if deimos-llvm had a module that publically
> imports all other modules, e.g. "all" or "llvm".

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

Jens


More information about the Digitalmars-d-announce mailing list