或许最好描述我的问题。
我正在开发一个Haskell库。但是部分库是用C语言编写的,另一部分实际上是用原始LLVM编写的。要实际让GHC吐出我想要的代码,我必须遵循这个过程:
ghc -emit-llvm
模块。 clang -emit-llvm
.ll
个文件。我将我在原始LLVM中手写的库部分和llvm-link
这些部分添加到一个.ll
文件中。这个过程(当然有适当的优化设置)似乎是我可以从C内联代码,删除函数调用开销的唯一方法。由于许多这些C函数非常小,因此这是非常重要的。
无论如何,我希望能够分发库并让用户能够尽可能轻松地使用它,同时仍然可以从上面的过程中获得优化。我理解它会比普通的库更痛苦(例如,你被迫通过LLVM编译)但是尽可能无痛地是我和我#39;我正在寻找建议。
任何指导都将受到赞赏,我不期待逐步回答,因为我认为这将是复杂的,但只是一些想法会有所帮助。