[
https://issues.apache.org/jira/browse/STDCXX-708?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12584228#action_12584228
]
Eric Lemings commented on STDCXX-708:
-------------------------------------
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.
> [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/stdcxx/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.