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

Bug#304500: marked as done (g++ -pendantic -ffast-math -O compile failure in <math.h>)



Your message dated Sun, 11 Feb 2007 23:34:50 +0100
with message-id <20070211223450.GQ11573@hades.madism.org>
and subject line Close with versions
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: libc6-dev
Version: 2.3.2.ds1-20

The following program fails to compile, using gcc version 3.3.5 (Debian
1:3.3.5-8) using the noted flags:

 // Compiling this g++ -c -pedantic -ffast-math  -O  gives errors due to an
 // ?: operator in bits/mathinline.h.
 #include <math.h>

The problem is a ?: operator that occurs in <bits/mathinline.h>.   I
enclose a patch that fixes the bug.

Here are the compile error messages:

$  g++ -c -pedantic -ffast-math  -O2  t.cc
In file included from /usr/include/math.h:362,
                 from t.cc:4:
/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

-Carl

--- /usr/include/bits/mathinline.h.bad	2004-12-26 21:18:35.000000000 -0500
+++ /usr/include/bits/mathinline.h	2005-04-13 12:24:20.149452016 -0400
@@ -381,7 +381,8 @@
     ("fscale			# 2^int(x * log2(e))\n\t"		      \
      : "=t" (__temp) : "0" (1.0), "u" (__exponent));			      \
   __temp -= 1.0;							      \
-  return __temp + __value ?: __x
+  __temp += __value;							      \
+  return __temp ? __temp : __x
 __inline_mathcodeNP_ (long double, __expm1l, __x, __expm1_code)
 
 

--- End Message ---
--- Begin Message ---
Version: 2.3.6.ds1-10

-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org

Attachment: pgpK2ITqAyD1Y.pgp
Description: PGP signature


--- End Message ---

Reply to: