2

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

$ clang -flto -O2 ac 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:未知的命令行参数“保存临时”。尝试:'libLLVMLTO -help' clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

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

4

1 回答 1

1

使用较新的链接器和 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

于 2016-11-01T23:56:25.493 回答