在clang命令行上提供LLVM ModulePass

我有一个与选择工具配合使用的ModulePass,但我无法弄清楚如何在命令行中使其可用。 我目前使用我的通行证的工作流程是:

  • clang -c -emit-llvm [c源代码文件]
  • llvm-link [llvm位码文件]
  • opt -load [PassName] .so - [pass-name] [linked llvm file]
  • llc [得到的位码文件]
  • gcc [生成的汇编文件] -o [目标]
  • 我想让我的pass与clang命令行集成,以便它可以作为现有软件(例如c ++标准库)的构建的一部分被调用,而不必为我编译的每个东西重新构建整个构建系统。 我已经看到了如何做到这一点的提示,但我无法将这些部分放在一起工作。

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

    LLVM - 使用clang自动运行自己的通行似乎解决了基本问题,但我希望我可以做到这一点,而不必修改clang(这似乎是建议那里)。

    使用LLVM 3.4从叮当中获得新通行证的最佳方法是什么?


    锵仍然使用PassManagerBuilder为3.5(见PassManagerBuilderWrapperBackendUtil.cpp )。 所以我相信在我的博客文章中使用RegisterStandardPasses扩展它仍然是向Clang的通行证经理添加通行证的唯一方法。

    很难找到关于“旧”通行证管理器基础设施如何被弃用的任何信息。 但是由于Clang仍在使用它,所以不能这样做。 :)

    链接地址: http://www.djcxy.com/p/64523.html

    上一篇: Make an LLVM ModulePass available on clang command line

    下一篇: Intel TBB vs CilkPlus