Hi,
It seems _finite math is gone for LLVM right now (https://reviews.llvm.org/D74712) but there are still trace of it here:
$ cat a1.c
#include <math.h>
double log(double x){
return x;
}
$ cat a2.c
#include <math.h>
double mylog(double x){
return log(x);
}
Let compile both with -Ofast. We won’t see __log_finite
in the a2.s
but we will see the function name in a1.s
is changed to __log_finite
. Is it expected?
Hi Masoud:
This is because the math.h in your system still has FINITE_MATH_ONLY support.
-Ofast in clang will set macro __FINITE_MATH_ONLY__
to 1, so it will preprocess your code,
and go into finite math path, which will do the renaming using __asm.
extern double log (double) asm (“” “__log_finite”) attribute ((nothrow ));
This is expected. If you don’t want it, you can use -fno-finite-math-only…
Or you can use newer version of glibc (hence no finite path in math.h at all).
Best,
Jinsong Ji (纪金松), PhD.
XL/LLVM on Power Compiler Development
E-mail: jji@us.ibm.com
Masoud Ataei via llvm-dev —07/20/2020 02:09:38 PM—Hi, It seems _finite math is gone for LLVM right now (