DragonEgg是否支持clang中的-fno-builtin参数?

时间:2013-04-10 00:11:41

标签: gcc llvm

我使用clang已经有一段时间了,我可以使用clang -fno-builtin -emit-llvm -c hello.c来阻止生成llvm内置函数,例如llvm.memset

最近,我使用DragonEgg切换到gcc,因为要构建的程序最初设计为使用gcc编译。我在网上搜索过,但没有找到任何关于如何设置DragonEgg参数的信息。

有人可以给我一些帮助吗?任何提示或参考都将受到欢迎。谢谢!

1 个答案:

答案 0 :(得分:0)

我已经找到了一种方法来使用gcc + DragonEgg来实现类似的效果。

gcc -S -c -O0 -fplugin=$(DRAGONEGG_SO) -fplugin-arg-dragonegg-emit-ir hello.c -o hello.bc
opt -O3 -disable-simplify-libcalls hello.bc -o hello.bc

$(DRAGONEGG_SO)dragonegg.so的路径。

基本上,LLVM内在函数由优化传递instcombine添加。使用-disable-simplify-libcalls时,无法在instcombine生成LLVM内部函数。

该方法也适用于llvm-gcc生成没有LLVM内在函数的LLVM IR。