lto链接后获取llvm IR
Get llvm IR after lto linking
链接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: Unknown command line argument 'save-temps'. Try:
'libLLVMLTO -help' clang: error: linker command failed with exit code
1 (use -v to see invocation)
还有什么方法可以转储 IR 的 lto 转换?
问题已通过以下方式通过较新的链接器和 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
链接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: Unknown command line argument 'save-temps'. Try: 'libLLVMLTO -help' clang: error: linker command failed with exit code 1 (use -v to see invocation)
还有什么方法可以转储 IR 的 lto 转换?
问题已通过以下方式通过较新的链接器和 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