c99-math execute failures on sparc-sun-solaris2.11
Andreas Tobler
andreast-list@fgznet.ch
Tue Feb 5 22:14:00 GMT 2008
Kaveh R. Ghazi wrote:
> Great, we're making progress.
>
> On mainline only (not 4.2 or prior) does this work instead?
Yep, trunk.
[ultra10:gcc/testsuite/gcc.dg] andreast% diff -u
/usr/include/iso/math_c99.h.orig /usr/include/iso/math_c99.h
--- /usr/include/iso/math_c99.h.orig Mon Feb 4 21:55:29 2008
+++ /usr/include/iso/math_c99.h Tue Feb 5 22:54:34 2008
@@ -67,10 +67,14 @@
__builtin_isunordered(__x_n, __x_n); })
#endif
#undef isinf
+#if __GNUC__ >= 4
+#define isinf(x) __builtin_isinf(x)
+#else
#define isinf(x) __extension__( \
{ __typeof(x) __x_i = (x); \
__x_i == (__typeof(__x_i)) INFINITY || \
__x_i == (__typeof(__x_i)) (-INFINITY); })
+#endif
#undef isfinite
#define isfinite(x) __extension__( \
{ __typeof(x) __x_f = (x); \
>
> #undef isinf
> #define isinf(x) __builtin_isinf(x)
[ultra10:head/objdir/gcc] andreast% gmake
RUNTESTFLAGS='dg.exp=c99-math-*' check
=== gcc Summary ===
# of expected passes 6
>
>
>
> How about this? (Can be run on any branch) Hopefully there are no
> typos...
>
> #undef isinf
> #define isinf(x) __extension__( \
> { __typeof(x) __x_i = (x); ! isnan(__x_i) && \
> (__x_i == (__typeof(__x_i)) INFINITY || \
> __x_i == (__typeof(__x_i)) (-INFINITY)); })
[ultra10:gcc/testsuite/gcc.dg] andreast# diff -u
/usr/include/iso/math_c99.h.orig /usr/include/iso/math_c99.h
--- /usr/include/iso/math_c99.h.orig Mon Feb 4 21:55:29 2008
+++ /usr/include/iso/math_c99.h Tue Feb 5 23:01:37 2008
@@ -68,9 +68,9 @@
#endif
#undef isinf
#define isinf(x) __extension__( \
- { __typeof(x) __x_i = (x); \
- __x_i == (__typeof(__x_i)) INFINITY || \
- __x_i == (__typeof(__x_i)) (-INFINITY); })
+ { __typeof(x) __x_i = (x); ! isnan(__x_i) &&\
+ (__x_i == (__typeof(__x_i)) INFINITY || \
+ __x_i == (__typeof(__x_i)) (-INFINITY)); })
#undef isfinite
#define isfinite(x) __extension__( \
{ __typeof(x) __x_f = (x); \
gmake RUNTESTFLAGS='dg.exp=c99-math-*' check
=== gcc Summary ===
# of expected passes 6
Both tests were done on trunk, 4.3.
I might test on 4.2.x later tomorrow, if needed.
>
> The __builtin_inf(x) style up above is what is done on mainline for
> solaris10. The second one is what is done in the solaris11 system
> header but I added a !isnan(x). I'm not sure which of these styles
> makes the most sense to plug into fixincludes.
>
> Another option would be to file a bug report with sun and have them fix
> the header internally using one of these three methods. I think they'd
> choose the latter as it should work with any gcc version, not just the
> latest ones. But that's up to them. In fixincludes we're free to make
> any choice we want for mainline and/or branches as needed.
Filing bugs is nice, but do not expect a fast solution. So, if _we_ need
a solution, we have to act. If opensolaris needs a solution, they have
to act.
Personally I'd like them to 'fix' the issue. Otherwise we're 'papering'
over an issue they have!?
>
> Thoughts?
I'll give you feedback about 4.2.x later to tomorrow.
Thanks again,
Andreas
More information about the Gcc
mailing list