Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
__builtin_isinf is busted
andres@alap4:~/src/postgresql$ clang-7 -march=i386 -O2 -m32 ~/tmp/flttst.c -o ~/tmp/flttst && ~/tmp/flttst
r1 = 1, r2 = 0
andres@alap4:~/src/postgresql$ clang-7 -march=nehalem -O2 -m32 ~/tmp/flttst.c -o ~/tmp/flttst && ~/tmp/flttst
r1 = 1, r2 = 1
andres@alap4:~/src/postgresql$ cat ~/tmp/flttst.c
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
double d1 = (argc ? 1e180 : 0);
double d2 = (argv ? 1e200 : 0);
int r2 = __builtin_isinf(d1 * d2);
int r1 = isinf(d1 * d2);
printf("r1 = %d, r2 = %d\n", r1, r2);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.