Clang通过使用高效的库函数替换某些部分来优化代码。
例如以下代码:
for (i=0;i<size;++i)
dest[i]=src[i];
将编译为(target = ARM程序集):
bl __aeabi_memcpy(PLT)
我尝试使用-fno-builtin和-O0但没有成功。
是否有标志或其他方法阻止编译器用库调用替换代码?
答案 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 标志与优化标志耦合。