防止clang用库调用替换我的代码

时间:2014-08-03 10:42:08

标签: optimization assembly arm clang llvm

Clang通过使用高效的库函数替换某些部分来优化代码。

例如以下代码:

for (i=0;i<size;++i)
       dest[i]=src[i];

将编译为(target = ARM程序集):

bl      __aeabi_memcpy(PLT)

我尝试使用-fno-builtin和-O0但没有成功。

是否有标志或其他方法阻止编译器用库调用替换代码?

1 个答案:

答案 0 :(得分:0)

它似乎是clang中的语法错误。您必须将优化标志与 no-builtin 标志一起使用。

以下命令生成程序集调用memcopy:

arm-linux-androideabi-clang -S myMemcpy.c -fno-builtin

以下命令生成程序集而不调用memcopy:

arm-linux-androideabi-clang -S myMemcpy.c -fno-builtin -O1

no-builtin 标志与优化标志耦合。