1

我使用以下 LLVM 工具将写入多个文件的 cpp 项目转换为“ONE”单个程序集文件。

clang      *.cpp   -S -emit-llvm
llvm-link  *.s     -S -o all.s
llc        all.s   -march=mips

在 GCC 中有没有办法做到这一点?特别是,有没有办法将 GCC 生成的程序集文件链接到一个程序集文件中?即,LLVM-LINK 的等价物是什么?

4

1 回答 1

0

也许LTO(链接时间优化)是您想要的。

gcc -flto然后,使用例如编译每个编译单元

gcc -flto -O -Wall -c src1.c
g++ -flto -O -Wall -c src2.cc

并使用-flto(和相同的优化)来链接它们:

g++ -flto -O src1.o src2.o -lsomething

LTO 通过在每个生成的程序集文件和目标文件中放入内部 GCC 表示(如 Gimple)的一些表示来在 GCC 中工作。查看它的文档

您可能想使用MELT来定制 GCC(或者只是使用它的探针来理解 Gimple,或者尝试一下gcc -fdump-tree-all)。

于 2013-08-03T21:59:04.600 回答