在链接

时间:2016-11-01 19:01:50

标签: llvm ld lto

链接lto之后有没有办法获得llvm IR?例如,我有以下一行:

  

$ clang -flto -O2 a.c main.c -fuse-ld = gold -v -save-temps

所以我希望获得llvm IR,其中文件a.c和文件main.c在一个monlithic.bc(或monlithic.o与IR)中链接。我尝试添加选项-Wl,-plugin-opt=save-temps但是出现错误:

  

libLLVMLTO:未知的命令行参数'save-temps'。尝试:   'libLLVMLTO -help'clang:错误:链接器命令失败并带有退出代码   1(使用-v查看调用)

还有什么方法可以转换IR的转换?

1 个答案:

答案 0 :(得分:0)

使用更新的链接器和llvm(llvm-3.8和binutils-2.25)以下列方式解决了这个问题:

  

$ ls

     

t1.c t2.c t2.h

     

$ clang -flto -O2 t1.c t2.c -v -fuse-ld = gold -save-temps   -Wl,-plugin-opt = save-temps -Wl, - verbose

     

...

     

$ ls

     

a.out a.out.bc a.out.o a.out.opt.bc t1.bc t1.c t1.i t1.o   t2.bc t2.c t2.h t2.i t2.o

     

$ llvm-dis a.out.bc

     

$ vim a.out.ll