使LLVM ModulePass在clang命令行上可用

埃里克

我有一个与opt工具一起使用的ModulePass,但是我在弄清楚如何使它可在命令行使用clang时遇到麻烦。我当前使用通行证的工作流程是:

  1. clang -c -emit-llvm [c源代码文件]
  2. llvm-link [llvm位代码文件]
  3. opt -load [PassName] .so-[pass-name] [链接的llvm文件]
  4. llc [产生的位码文件]
  5. gcc [结果汇编文件] -o [目标]

我希望将自己的密码与clang命令行集成在一起,以便可以将其作为现有软件(例如c ++标准库)构建的一部分来调用,而不必为我编译的每件事重新构建整个构建系统。我已经看到了有关如何执行此操作的提示,但是我无法将各个部分放在一起进行工作。

使用Clang自动运行LLVM Pass可以准确地描述我想要的内容,但是LLVM 3.4中似乎已弃用该方法(PassManagerBuilder已移至旧名称空间)。

LLVM-使用clang自动运行Own Pass似乎可以解决基本问题,但是我希望我可以在不修改clang的情况下做到这一点(这似乎是建议的内容)。

使用LLVM 3.4从clang提供新通行证的最佳方法是什么?

阿德里安

PassManagerBuilder从3.5开始,Clang仍然使用(请参阅中的PassManagerBuilderWrapperBackendUtil.cpp)。因此,我相信RegisterStandardPasses,像在我的博客文章中一样,使用扩展它仍然是向Clang的通行证管理器添加通行证的唯一方法。

这是令人沮丧很难找到任何关于如何过时的“老”过程管理的基础设施。但由于锵仍然使用它,它不能过时。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从llvm-clang到llvm-gcc42的默认编译器(命令行)

来自分类Dev

Clang,LLVM和g ++

来自分类Dev

Clang,LLVM和g ++

来自分类Dev

LLVM上的Syscall / sysenter

来自分类Dev

LLVM | 带有命令行选项的程序输入功能的代码生成

来自分类Dev

使用llvm-prof进行性能分析时传递命令行参数

来自分类Dev

使用clang生成LLVM IR

来自分类Dev

clang / LLVM项目级别优化

来自分类Dev

LLVM IR上的Phi指令

来自分类Dev

创建LLVM传递时使用FunctionPass而不是ModulePass

来自分类Dev

在Linux上针对clang / llvm库的链接总是失败

来自分类Dev

使用LLVM在JXcore中可用的节点插件

来自分类Dev

LLVM可用于生成优化的C代码

来自分类Dev

如何使函数的LLVM IR对我的程序可用?

来自分类Dev

llvm / clang编译错误,内存耗尽

来自分类Dev

如何为iOS交叉编译clang / llvm?

来自分类Dev

Clang和LLVM-版本与调试版本

来自分类Dev

强制函数在Clang / LLVM中内联

来自分类Dev

配置文件LLVM通过Clang

来自分类Dev

测量使用Clang / LLVM生成的函数的大小?

来自分类Dev

LLVM(Clang)是否曾经使用GCC?

来自分类Dev

Clang或LLVM中的-Wa-divide选项

来自分类Dev

如何为 Android 编译 LLVM/Clang?

来自分类Dev

如何在Mac上禁用Apple的LLVM

来自分类Dev

Windows 10 上的最新 CMake 和 LLVM

来自分类Dev

如何在Ubuntu 14.01上安装LLVM 3.7.x(llvm.org/apt down)

来自分类Dev

clang插件编译错误:未定义符号llvm :: Registry <clang :: PluginASTAction,llvm :: RegistryTraits <clang :: PluginASTAction>>

来自分类Dev

LLVM的llvm.stackprotect

来自分类Dev

clang(和LLVM)和gcc / g ++有什么区别?