嗨,我在优化方面遇到了一些问题。
我尝试使用内置函数编译 gcc 测试之一:
#include <stdio.h>
#ifdef HAVE_C99_RUNTIME
double test1 (double x)
{
return __builtin_pow (x, 1/3);
}
double test2 (double x)
{
return __builtin_pow (x, 4./3.);
}
double test3a (double x)
{
return __builtin_pow (x, 5./3.);
}
double test3b (double x)
{
return __builtin_pow (x, -5./3.);
}
double test4 (double x)
{
return __builtin_pow (x, 7./3.);
}
#endif
我尝试用接下来的 2 种方式编译它:
1 种方式:
gcc -mglibc -O -ffast-math -std=c99 -fno-ident -S -o builtins-58.s
并且在输出汇编文件中全部call pow
更改为call cbrt
- 它的预期
2方式:
gcc -mbionic -O -ffast-math -std=c99 -fno-ident -S -o builtins-58.s
使用-mbionic
而不是-mglibc
我得到输出call pow
有谁知道函数是如何工作optmimization
的builtin
Bionic