Yeah, the LDBL_EPSILON macro is getting undefined and redefined in
the etc/config/src/float_defs.h header.

        file stdcxx/trunk/etc/config/float_defs.h:
         30 #  if defined (__EDG__) && !defined (__INTEL_COMPILER)
         31      // define gcc 4 intrinsics otherwise not recognized
         32      // by the front end
        ...
         67 #    if __GNUC__ < 4
         68
         69       // prevent the propriterary gcc __extension__ from
         70       // throwing the vanilla EDG demo for a loop
         71
         72 #      undef LDBL_EPSILON
         73 #      undef LDBL_MIN
         74 #      undef LDBL_MAX
         75
         76        // redefine to prevent compilation errors
         77 #      define LDBL_EPSILON 1.0842021724855044e-19L
        ...

Does the block starting at line 30 really apply to all compilers using
an EDG front-end other than Intel C++?  Or only to GCC?  The comment
suggests that it applies only to GCC.

If so, either the directive at line 30 should be written as follows:

         30 #  if defined (__EDG__) && defined (__GNUC__) && !defined
(__INTEL_COMPILER)
         31      // define gcc 4 intrinsics otherwise not recognized
         32      // by the front end

Or the directive at line 67 should be written like this:

         67 #    if defined (__GNUC__) && __GNUC__ < 4

Oui?

Brad.

> -----Original Message-----
> From: Martin Sebor (JIRA) [mailto:[EMAIL PROTECTED] 
> Sent: Monday, March 31, 2008 7:02 PM
> To: Eric Lemings
> Subject: [jira] Commented: (STDCXX-708) [HP aCC 
> 6.15/HP-UX/IPF] 18.numeric.special.float fails assertions
> 
> 
>     [ 
> https://issues.apache.org/jira/browse/STDCXX-708?page=com.atla
> ssian.jira.plugin.system.issuetabpanels:comment-tabpanel&focus
> edCommentId=12583959#action_12583959 ] 
> 
> Martin Sebor commented on STDCXX-708:
> -------------------------------------
> 
> I wonder if the EDG-specific macros in 
> [float_defs.h|http://svn.apache.org/repos/asf/stdcxx/branches/
> 4.2.x/etc/config/src/float_defs.h] might have something to do 
> with it. Recall that HP aCC 6 is based on the EDG front end 
> and like other such compilers {{#defines}} the {{\_\_EDG__}} 
> macro. The preprocessor conditional needs to be adjusted 
> along the same lines as the one in 
> [_config.h|http://svn.apache.org/repos/asf/stdcxx/trunk/includ
> e/rw/_config.h]:
> 
> {noformat}
>    190  // NOTE: the __EDG__ macro is #defined by most 
> EDG-based compilers
>    191  
>    192  #if    defined (__EDG__)                \
>    193      && !defined (__DECCXX)              \
>    194      && !defined (__HP_aCC)              \
>    195      && !defined (__INTEL_COMPILER)      \
>    196      && !defined (_SGI_COMPILER_VERSION)
> {noformat}
> 
> > [HP aCC 6.15/HP-UX/IPF] 18.numeric.special.float fails assertions
> > -----------------------------------------------------------------
> >
> >                 Key: STDCXX-708
> >                 URL: 
> https://issues.apache.org/jira/browse/STDCXX-708
> >             Project: C++ Standard Library
> >          Issue Type: Bug
> >          Components: Tests
> >    Affects Versions: trunk
> >         Environment: {noformat}
> > $ uname -srm && aCC -V
> > HP-UX B.11.31 ia64
> > aCC: HP C/aC++ B3910B A.06.15 [May 16 2007]
> > {noformat}
> >            Reporter: Martin Sebor
> >            Assignee: Eric Lemings
> >             Fix For: 4.2.1
> >
> >   Original Estimate: 4h
> >          Time Spent: 6h
> >  Remaining Estimate: 0h
> >
> > When compiled with HP aCC 6 on HP-UX running on IPF 
> hardware the newly added test 
> [18.numeric.special.float.cpp|http://svn.apache.org/viewvc/std
> cxx/trunk/tests/support/18.numeric.special.float.cpp] fails a 
> bunch of assertions.
> > One of them look like a configuration problem in the 
> library (has_denorm) while others (min(), max(), and 
> epsilon()) like problems in the test
> > {noformat}
> > $ nice gmake 18.numeric.special.float -r && 
> ./18.numeric.special.float
> > aCC -c  -D_RWSTDDEBUG   -mt -I/amd/devco/sebor/stdcxx/include \
> > -I/build/sebor/stdcxx-aCC-6.15-15D/include 
> -I/amd/devco/sebor/stdcxx/tests/include  \
> > -AA  -g +d  +DD64 +w +W392 +W655 +W684 +W818 +W819 +W849 
> +W2193 +W2236 +W2261 \
> > +W2340 +W2401 +W2487 +W4227 +W4229 +W4231 +W4235 +W4237 
> +W4249 +W4255 +W4272 \
> > +W4284 +W4285 +W4286   
> /amd/devco/sebor/stdcxx/tests/support/18.numeric.special.float.cpp
> > "/amd/devco/sebor/stdcxx/include/limits", line 449: warning 
> #4070-D: floating
> >           point underflow exception
> >       _RWSTD_STATIC_FUN (long double, (min), _RWSTD_LDBL_MIN) 
> >       ^
> > aCC 18.numeric.special.float.o -o 18.numeric.special.float \
> > -L/build/sebor/stdcxx-aCC-6.15-15D/rwtest -lrwtest15D -AA 
> +nostl -Wl,+s   -mt +DD64 \
> > -L/build/sebor/stdcxx-aCC-6.15-15D/lib  \
> > 
> -Wl,+b/build/sebor/stdcxx-aCC-6.15-15D/lib:/build/sebor/stdcxx
> -aCC-6.15-15D/rwtest \
> > -lstd15D  -lm 
> > rm 18.numeric.special.float.o
> > # INFO (S1) (10 lines):
> > # TEXT: 
> > # COMPILER: HP aCC, __HP_aCC = 61500, __EDG_VERSION__ = 308
> > # ENVIRONMENT: ia64 running hp-ux
> > # FILE: 18.numeric.special.float.cpp
> > # COMPILED: Jan 24 2008, 17:28:57
> > # COMMENT: floating specializations
> > ############################################################
> > # CLAUSE: numeric.special
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<float>::has_denorm == -1, got 1
> > # CLAUSE: numeric.special
> > # LINE: 1366
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<double>::has_denorm == -1, got 1
> > # CLAUSE: numeric.special
> > # LINE: 1366
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<long double>::min() == 3.3621e-4932, 
> got 3.3621e-4932
> > # CLAUSE: numeric.special
> > # LINE: 1253
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<long double>::max() == 
> 1.18973e+4932, got 1.18973e+4932
> > # CLAUSE: numeric.special
> > # LINE: 1254
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<long double>::epsilon() == 
> 1.92593e-34, got 1.0842e-19
> > # CLAUSE: numeric.special
> > # LINE: 1262
> > # ASSERTION (S7) (4 lines):
> > # TEXT: numeric_limits<long double>::has_denorm == -1, got 1
> > # CLAUSE: numeric.special
> > # LINE: 1366
> > # +-----------------------+----------+----------+----------+
> > # | DIAGNOSTIC            |  ACTIVE  |   TOTAL  | INACTIVE |
> > # +-----------------------+----------+----------+----------+
> > # | (S1) INFO             |        1 |        1 |       0% |
> > # | (S5) WARNING          |        0 |        3 |     100% |
> > # | (S7) ASSERTION        |        6 |      134 |      95% |
> > # +-----------------------+----------+----------+----------+
> > {noformat}
> 
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
> 
> 

Reply via email to