Unless I am doing something wrong, that flag does not fix the problem.
#include <errno.h>
#include <math.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
errno = 0;
printf("%f %d\n", log(-HUGE_VAL), errno);
errno = 0;
printf("%f %d\n", log( HUGE_VAL), errno);
}
/* result is different for 32- and 64-bit
> rm a.out; cc -xtarget=native -xlibmieee log_inf.c -lm ; a.out
-NaN 33
Inf 0
> rm a.out ; cc -xtarget=native64 -xlibmieee log_inf.c -lm ; a.out
-NaN 0
Inf 0
#define EDOM 33 in /usr/include/sys/errno.h
*/