[LLVMdev] Handling of built-in functions
Javier Martinez
javier at jmartinez.org
Thu Jul 16 02:07:20 PDT 2009
Hi,
I'm trying to add support in my back end for certain functions that are
seen as built-in by the target. Some of these functions can be
implemented in a) LLVM, and some in b) the native target language.
My approach to case a) is to write the built-in function implementation
in C, compile it to LLVM using Clang, link it to the module that uses it
and finally add a pass to inline it. The last two steps can be made
inside a ModulePass. The definition of TargetMachine allows for any pass
manager deriving form BasicPass to be passed to AddPassesToEmitFile.
However, I see that llc uses a FunctionPassManager for all the passes. A
(module)PassManager is used only if the target implements
AddPassesToEmitWholeFile but the comments on the base class discourage
this path. Am I approaching the problem the wrong way?
I haven't worked much on case b) but my idea was to use a similar
approach but instead of writing the built-in function implementation in
straight C an asm block would be used to insert the code. Does this make
sense?
Thanks,
Javier
More information about the llvm-dev
mailing list