有没有办法在Clang/LLVM中强制使用内联函数?
AFAIK,以下只是对编译器的一个提示,但它可以忽略该请求.
__attribute__((always_inline))
Run Code Online (Sandbox Code Playgroud)
我不介意如果它不能内联函数,编译将失败.
使用LLVM构建项目时,某些函数调用将被内部函数替换.替换是由前端(例如clang)还是LLVM后端完成的?
通过互联网进行的讨论表明,内在功能替换与优化选项有关.那么这是否意味着如果没有优化选项,那么就不会发生内在替代?或者实际上,有一些默认的内部函数替换无法禁用?
如果有任何方法可以禁用所有内部函数,我该怎么做?
我正在使用 LLVM 7,并且我llvm::Module想使用标准优化管道对其进行优化。不幸的是,没有llvm::runDefaultOptimizations我可以调用的函数。似乎有无数种方法可以优化 LLVM 中的模块。我在这个主题上的搜索发现了许多旧的/折旧的 API 和一些在我的系统上不起作用的示例。
我想以-O3尽可能少的麻烦来运行所有标准优化。我不想手动列出所有的通行证,甚至不想写一个 for 循环。我认为llvm::PassBuilder::buildModuleOptimizationPipeline可能是解决方案,但是当我尝试使用该函数时出现链接器错误,我认为这很奇怪。