【发布时间】:2014-08-03 10:42:08
【问题描述】:
Clang 通过用高效的库函数替换某些部分来优化代码。
例如下面的代码:
for (i=0;i<size;++i)
dest[i]=src[i];
将被编译为(target=ARM 程序集):
bl __aeabi_memcpy(PLT)
我尝试使用 -fno-builtin 和 -O0 没有成功。
是否有标志或其他方式阻止编译器用库调用替换代码?
【问题讨论】:
-
奇怪。我不能用一个小测试用例来调用函数。您是否有生成该代码的测试用例?你使用什么命令行参数?
-
命令行:'/usr/share/android-arm-l14-toolchain/bin/clang31 -cc1 -triple arm-none-linux-androideabi -S -target-abi aapcs-linux -目标 CPU arm1022e -backend-option -arm-enable-ehabi -backend-option -arm-enable-ehabi-descriptors -backend-option -arm-ignore-has-ras -internal-isystem /usr/share/android-arm -l14-toolchain/lib/clang/3.1/include -internal-externc-isystem /usr/share/android-arm-l14-toolchain/bin/../sysroot/usr/include -o myMemcpy.s -x c myMemcpy. c'
-
您的许多命令行选项似乎已过时:当前的 clang (3.5) 无法识别它们。我看到你使用的是3.1。也许您应该获得更新版本的 clang?
-
但是它将如何解决我的问题?
-
我不确定。正如我所说,我无法用 3.5 复制它。
标签: optimization assembly arm clang llvm