Bug#208016: g++-3.3.2 -O3 -ffast-math does not accept <math.h> with all warning options enabled.
Package: libc6-dev
Version: 2.3.2-3
Save the following program as "math.cpp"
/* snip */
#include <math.h>
int main(int,char **)
{
return 0;
}
/* snip */
then invoke the compiler as follows:
$ g++-3.3 -Wall -W -pedantic -O3 -ffast-math math.cpp
Result is:
In file included from /usr/include/math.h:362,
from math.cpp:6:
/usr/include/bits/mathinline.h: In function `long double __expm1l(long
double)
':
/usr/include/bits/mathinline.h:385: error: ISO C++ forbids omitting the
middle
term of a ?: expression
/usr/include/bits/mathinline.h: In function `double expm1(double)':
/usr/include/bits/mathinline.h:536: error: ISO C++ forbids omitting the
middle
term of a ?: expression
/usr/include/bits/mathinline.h: In function `float expm1f(float)':
/usr/include/bits/mathinline.h:536: error: ISO C++ forbids omitting the
middle
term of a ?: expression
/usr/include/bits/mathinline.h: In function `long double expm1l(long
double)':
/usr/include/bits/mathinline.h:536: error: ISO C++ forbids omitting the
middle
term of a ?: expression
Thus, the compiler cannot compile the program in question since the
math.h definitions conflict with -pedantic -W -Wall.
I suggest to check for the compiler version and invocation flags (as
much as possible) and to bypass the offending lines in math.h.
Compiler version is: 3.3.2-0pre1
Greetings,
Thomas
Reply to: