[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: