Compiler construction LLVM中是否有接口可以将内联函数编译为内部表示?

Compiler construction LLVM中是否有接口可以将内联函数编译为内部表示?,compiler-construction,clang,llvm,libclang,Compiler Construction,Clang,Llvm,Libclang,我正在基于llvm开发一些东西,我想在运行代码时执行JIT,在代码JIT中,我在代码not JIT(生成JIT代码的程序代码)中使用一些函数。但是我发现它很昂贵,在运行代码时需要花费很多时间。是否有办法将原始代码中的函数编译为内部表示形式,并将其粘贴到JIT代码中,类似于内联函数。 例如: 原始代码: void f(){ //.... } ------------jitted代码 jitted_function(){ f(); } inline void f(){ //... } ji

我正在基于llvm开发一些东西,我想在运行代码时执行JIT,在代码JIT中,我在代码not JIT(生成JIT代码的程序代码)中使用一些函数。但是我发现它很昂贵,在运行代码时需要花费很多时间。是否有办法将原始代码中的函数编译为内部表示形式,并将其粘贴到JIT代码中,类似于内联函数。 例如: 原始代码:

void f(){
//....
}
------------jitted代码

jitted_function(){
  f();
}
inline void f(){
//...
}

jitted_function(){
  f();
}
我想要的是: --------------------jitted代码

jitted_function(){
  f();
}
inline void f(){
//...
}

jitted_function(){
  f();
}
<>最困难的是,如果我直接粘贴C++代码,那么我必须解析F所用的函数和类,并且粘贴它们,我不想这样做。

< p>这只是代码:-)/p> 您希望代码同时出现在宿主程序和JIT程序中,因此将其放置在可从宿主程序和JIT程序访问的位置,并调整您构建的代码,使其同时包含在宿主程序和JIT程序中。这是个问题吗


至于问题的第一部分,从JIT代码调用主机代码“非常慢”,这听起来很奇怪。只要宿主代码也是通过优化构建的,它就不会太慢,这要感谢从JIT代码本身调用函数。也许,如果它是一个很小的函数,您希望内联,那么可能会有所不同。在这种情况下,只需将其包含在两个位置

因为我在嵌套循环中调用原始函数,所以函数调用开销很大。这就是为什么我想让它内联。