aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2006-02-07 13:14:03 +0000
committerPaolo Carlini <pcarlini@suse.de>2006-02-07 13:14:03 +0000
commit0e5f4fe91f36f4528d4b64b67862e586307d87cb (patch)
treecc86837e8687d6a0aa23db28adf57f641ea15a85 /libstdc++-v3
parent5f9dbe8425aa0fde021594e3d03bb33ffa4a800a (diff)
2006-02-07 Paolo Carlini <pcarlini@suse.de>
* include/tr1/cmath: New. * include/tr1/cstdlib: Likewise. * include/tr1/ctime: Likewise. * include/tr1/math.h: Likewise. * include/tr1/stdlib.h: Likewise. * include/Makefile.am: Add. * acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add <math.h> checks. * testsuite/tr1/8_c_compatibility/cmath/functions.cc: New. * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Likewise. * testsuite/tr1/8_c_compatibility/cstdlib/types.cc: Likewise. * testsuite/tr1/headers.cc: Update. * include/tr1/cinttypes: Do not provide abs and div, conflicting with the above overloads for _Longlong types. * include/tr1/inttypes.h: Adjust. * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Adjust. * docs/html/ext/tr1.html: Update. * testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Tweak. * include/Makefile.in: Regenerate. * config.h.in: Likewise. * configure: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@110696 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog27
-rw-r--r--libstdc++-v3/acinclude.m4118
-rw-r--r--libstdc++-v3/config.h.in4
-rwxr-xr-xlibstdc++-v3/configure170
-rw-r--r--libstdc++-v3/docs/html/ext/tr1.html20
-rw-r--r--libstdc++-v3/include/Makefile.am5
-rw-r--r--libstdc++-v3/include/Makefile.in5
-rw-r--r--libstdc++-v3/include/tr1/cinttypes17
-rw-r--r--libstdc++-v3/include/tr1/cmath298
-rw-r--r--libstdc++-v3/include/tr1/cstdlib79
-rw-r--r--libstdc++-v3/include/tr1/ctime39
-rw-r--r--libstdc++-v3/include/tr1/inttypes.h7
-rw-r--r--libstdc++-v3/include/tr1/math.h39
-rw-r--r--libstdc++-v3/include/tr1/stdlib.h56
-rw-r--r--libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc4
-rw-r--r--libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc187
-rw-r--r--libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc66
-rw-r--r--libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types.cc38
-rw-r--r--libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc8
-rw-r--r--libstdc++-v3/testsuite/tr1/headers.cc5
20 files changed, 1159 insertions, 33 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 520bbe2e4eb..c35668506fc 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,30 @@
+2006-02-07 Paolo Carlini <pcarlini@suse.de>
+
+ * include/tr1/cmath: New.
+ * include/tr1/cstdlib: Likewise.
+ * include/tr1/ctime: Likewise.
+ * include/tr1/math.h: Likewise.
+ * include/tr1/stdlib.h: Likewise.
+ * include/Makefile.am: Add.
+ * acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add <math.h> checks.
+ * testsuite/tr1/8_c_compatibility/cmath/functions.cc: New.
+ * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Likewise.
+ * testsuite/tr1/8_c_compatibility/cstdlib/types.cc: Likewise.
+ * testsuite/tr1/headers.cc: Update.
+
+ * include/tr1/cinttypes: Do not provide abs and div, conflicting
+ with the above overloads for _Longlong types.
+ * include/tr1/inttypes.h: Adjust.
+ * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Adjust.
+
+ * docs/html/ext/tr1.html: Update.
+
+ * testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Tweak.
+
+ * include/Makefile.in: Regenerate.
+ * config.h.in: Likewise.
+ * configure: Likewise.
+
2006-02-07 Mark Mitchell <mark@codesourcery.com>
* testsuite/testsuite_tr1.h (test_property): New function.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index bd1b380a4bc..dc4e237968c 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1181,6 +1181,124 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
<tr1/cstdint> in namespace std::tr1.])
fi
+ # Check for the existence of <math.h> functions.
+ AC_MSG_CHECKING([for ISO C99 support to TR1 in <math.h>])
+ AC_CACHE_VAL(ac_c99_math_tr1, [
+ AC_TRY_COMPILE([#include <math.h>],
+ [acosh(0.0);
+ acoshf(0.0f);
+ acoshl(0.0l);
+ asinh(0.0);
+ asinhf(0.0f);
+ asinhl(0.0l);
+ atanh(0.0);
+ atanhf(0.0f);
+ atanhl(0.0l);
+ cbrt(0.0);
+ cbrtf(0.0f);
+ cbrtl(0.0l);
+ copysign(0.0, 0.0);
+ copysignf(0.0f, 0.0f);
+ copysignl(0.0l, 0.0l);
+ erf(0.0);
+ erff(0.0f);
+ erfl(0.0l);
+ erfc(0.0);
+ erfcf(0.0f);
+ erfcl(0.0l);
+ exp2(0.0);
+ exp2f(0.0f);
+ exp2l(0.0l);
+ expm1(0.0);
+ expm1f(0.0f);
+ expm1l(0.0l);
+ fdim(0.0, 0.0);
+ fdimf(0.0f, 0.0f);
+ fdiml(0.0l, 0.0l);
+ fma(0.0, 0.0, 0.0);
+ fmaf(0.0f, 0.0f, 0.0f);
+ fmal(0.0l, 0.0l, 0.0l);
+ fmax(0.0, 0.0);
+ fmaxf(0.0f, 0.0f);
+ fmaxl(0.0l, 0.0l);
+ fmin(0.0, 0.0);
+ fminf(0.0f, 0.0f);
+ fminl(0.0l, 0.0l);
+ hypot(0.0, 0.0);
+ hypotf(0.0f, 0.0f);
+ hypotl(0.0l, 0.0l);
+ ilogb(0.0);
+ ilogbf(0.0f);
+ ilogbl(0.0l);
+ lgamma(0.0);
+ lgammaf(0.0f);
+ lgammal(0.0l);
+ llrint(0.0);
+ llrintf(0.0f);
+ llrintl(0.0l);
+ llround(0.0);
+ llroundf(0.0f);
+ llroundl(0.0l);
+ log1p(0.0);
+ log1pf(0.0f);
+ log1pl(0.0l);
+ log2(0.0);
+ log2f(0.0f);
+ log2l(0.0l);
+ logb(0.0);
+ logbf(0.0f);
+ logbl(0.0l);
+ lrint(0.0);
+ lrintf(0.0f);
+ lrintl(0.0l);
+ lround(0.0);
+ lroundf(0.0f);
+ lroundl(0.0l);
+ nan(0);
+ nanf(0);
+ nanl(0);
+ nearbyint(0.0);
+ nearbyintf(0.0f);
+ nearbyintl(0.0l);
+ nextafter(0.0, 0.0);
+ nextafterf(0.0f, 0.0f);
+ nextafterl(0.0l, 0.0l);
+ nexttoward(0.0, 0.0);
+ nexttowardf(0.0f, 0.0f);
+ nexttowardl(0.0l, 0.0l);
+ remainder(0.0, 0.0);
+ remainderf(0.0f, 0.0f);
+ remainderl(0.0l, 0.0l);
+ remquo(0.0, 0.0, 0);
+ remquo(0.0f, 0.0f, 0);
+ remquo(0.0l, 0.0l, 0);
+ rint(0.0);
+ rintf(0.0f);
+ rintl(0.0l);
+ round(0.0);
+ roundf(0.0f);
+ roundl(0.0l);
+ scalbln(0.0, 0l);
+ scalblnf(0.0f, 0l);
+ scalblnl(0.0l, 0l);
+ scalbn(0.0, 0);
+ scalbnf(0.0f, 0);
+ scalbnl(0.0l, 0);
+ tgamma(0.0);
+ tgammaf(0.0f);
+ tgammal(0.0l);
+ trunc(0.0);
+ truncf(0.0f);
+ truncl(0.0l);
+ ],[ac_c99_math_tr1=yes], [ac_c99_math_tr1=no])
+ ])
+ AC_MSG_RESULT($ac_c99_math_tr1)
+ if test x"$ac_c99_math_tr1" = x"yes"; then
+ AC_DEFINE(_GLIBCXX_USE_C99_MATH_TR1, 1,
+ [Define if C99 functions or macros in <math.h> should be imported
+ in <tr1/cmath> in namespace std::tr1.])
+ fi
+
# Check for the existence of <inttypes.h> functions (NB: doesn't make
# sense if the previous check fails, per C99, 7.8/1).
ac_c99_inttypes_tr1=no;
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index d940e6189c7..61840a5628b 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -715,6 +715,10 @@
in namespace std. */
#undef _GLIBCXX_USE_C99_MATH
+/* Define if C99 functions or macros in <math.h> should be imported in
+ <tr1/cmath> in namespace std::tr1. */
+#undef _GLIBCXX_USE_C99_MATH_TR1
+
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
namespace std::tr1. */
#undef _GLIBCXX_USE_C99_STDINT_TR1
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index c0ac50f470d..5ed65950480 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -30610,6 +30610,176 @@ _ACEOF
fi
+ # Check for the existence of <math.h> functions.
+ echo "$as_me:$LINENO: checking for ISO C99 support to TR1 in <math.h>" >&5
+echo $ECHO_N "checking for ISO C99 support to TR1 in <math.h>... $ECHO_C" >&6
+ if test "${ac_c99_math_tr1+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+acosh(0.0);
+ acoshf(0.0f);
+ acoshl(0.0l);
+ asinh(0.0);
+ asinhf(0.0f);
+ asinhl(0.0l);
+ atanh(0.0);
+ atanhf(0.0f);
+ atanhl(0.0l);
+ cbrt(0.0);
+ cbrtf(0.0f);
+ cbrtl(0.0l);
+ copysign(0.0, 0.0);
+ copysignf(0.0f, 0.0f);
+ copysignl(0.0l, 0.0l);
+ erf(0.0);
+ erff(0.0f);
+ erfl(0.0l);
+ erfc(0.0);
+ erfcf(0.0f);
+ erfcl(0.0l);
+ exp2(0.0);
+ exp2f(0.0f);
+ exp2l(0.0l);
+ expm1(0.0);
+ expm1f(0.0f);
+ expm1l(0.0l);
+ fdim(0.0, 0.0);
+ fdimf(0.0f, 0.0f);
+ fdiml(0.0l, 0.0l);
+ fma(0.0, 0.0, 0.0);
+ fmaf(0.0f, 0.0f, 0.0f);
+ fmal(0.0l, 0.0l, 0.0l);
+ fmax(0.0, 0.0);
+ fmaxf(0.0f, 0.0f);
+ fmaxl(0.0l, 0.0l);
+ fmin(0.0, 0.0);
+ fminf(0.0f, 0.0f);
+ fminl(0.0l, 0.0l);
+ hypot(0.0, 0.0);
+ hypotf(0.0f, 0.0f);
+ hypotl(0.0l, 0.0l);
+ ilogb(0.0);
+ ilogbf(0.0f);
+ ilogbl(0.0l);
+ lgamma(0.0);
+ lgammaf(0.0f);
+ lgammal(0.0l);
+ llrint(0.0);
+ llrintf(0.0f);
+ llrintl(0.0l);
+ llround(0.0);
+ llroundf(0.0f);
+ llroundl(0.0l);
+ log1p(0.0);
+ log1pf(0.0f);
+ log1pl(0.0l);
+ log2(0.0);
+ log2f(0.0f);
+ log2l(0.0l);
+ logb(0.0);
+ logbf(0.0f);
+ logbl(0.0l);
+ lrint(0.0);
+ lrintf(0.0f);
+ lrintl(0.0l);
+ lround(0.0);
+ lroundf(0.0f);
+ lroundl(0.0l);
+ nan(0);
+ nanf(0);
+ nanl(0);
+ nearbyint(0.0);
+ nearbyintf(0.0f);
+ nearbyintl(0.0l);
+ nextafter(0.0, 0.0);
+ nextafterf(0.0f, 0.0f);
+ nextafterl(0.0l, 0.0l);
+ nexttoward(0.0, 0.0);
+ nexttowardf(0.0f, 0.0f);
+ nexttowardl(0.0l, 0.0l);
+ remainder(0.0, 0.0);
+ remainderf(0.0f, 0.0f);
+ remainderl(0.0l, 0.0l);
+ remquo(0.0, 0.0, 0);
+ remquo(0.0f, 0.0f, 0);
+ remquo(0.0l, 0.0l, 0);
+ rint(0.0);
+ rintf(0.0f);
+ rintl(0.0l);
+ round(0.0);
+ roundf(0.0f);
+ roundl(0.0l);
+ scalbln(0.0, 0l);
+ scalblnf(0.0f, 0l);
+ scalblnl(0.0l, 0l);
+ scalbn(0.0, 0);
+ scalbnf(0.0f, 0);
+ scalbnl(0.0l, 0);
+ tgamma(0.0);
+ tgammaf(0.0f);
+ tgammal(0.0l);
+ trunc(0.0);
+ truncf(0.0f);
+ truncl(0.0l);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_c99_math_tr1=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_c99_math_tr1=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+ echo "$as_me:$LINENO: result: $ac_c99_math_tr1" >&5
+echo "${ECHO_T}$ac_c99_math_tr1" >&6
+ if test x"$ac_c99_math_tr1" = x"yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _GLIBCXX_USE_C99_MATH_TR1 1
+_ACEOF
+
+ fi
+
# Check for the existence of <inttypes.h> functions (NB: doesn't make
# sense if the previous check fails, per C99, 7.8/1).
ac_c99_inttypes_tr1=no;
diff --git a/libstdc++-v3/docs/html/ext/tr1.html b/libstdc++-v3/docs/html/ext/tr1.html
index e8601ac03a9..69dd2daaaac 100644
--- a/libstdc++-v3/docs/html/ext/tr1.html
+++ b/libstdc++-v3/docs/html/ext/tr1.html
@@ -1918,7 +1918,7 @@ release.
<td>done</td>
<td></td>
<td></td>
- <td></td>
+ <td>abs, div: issue with _Longlong</td>
</tr>
<tr>
<td>8.11.2</td>
@@ -2115,49 +2115,49 @@ release.
<tr>
<td>8.25</td>
<td>Additions to header <code>&lt;cstdlib&gt;</code></td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
<td>8.25.1</td>
<td>Synopsis</td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
<td>8.25.2</td>
<td>Definitions</td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
<td>8.25.3</td>
<td>Function <code>abs</code></td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
<td>8.25.4</td>
<td>Function <code>div</code></td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
<td>8.26</td>
<td>Additions to header <code>&lt;stdlib.h&gt;</code></td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
<td></td>
</tr>
<tr>
@@ -2179,10 +2179,10 @@ release.
<tr>
<td>8.29</td>
<td>Additions to header <code>&lt;ctime&gt;</code></td>
+ <td>done</td>
<td></td>
<td></td>
- <td>missing</td>
- <td></td>
+ <td>C library responsability</td>
</tr>
<tr>
<td>8.30</td>
@@ -2307,7 +2307,7 @@ permitted in any medium, provided this notice is preserved.
<table width="100%" border="0">
<tr>
<td>
- <!-- IGNORE DIFF -->Last modified 2006-02-05
+ <!-- IGNORE DIFF -->Last modified 2006-02-07
</td>
<td align="right" valign="bottom">
<a href="http://validator.w3.org/check/referer">
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index b16993d1175..4f124abb03a 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -489,11 +489,14 @@ tr1_headers = \
${tr1_srcdir}/cfloat \
${tr1_srcdir}/cinttypes \
${tr1_srcdir}/climits \
+ ${tr1_srcdir}/cmath \
${tr1_srcdir}/common.h \
${tr1_srcdir}/complex \
${tr1_srcdir}/cstdarg \
${tr1_srcdir}/cstdint \
${tr1_srcdir}/cstdio \
+ ${tr1_srcdir}/cstdlib \
+ ${tr1_srcdir}/ctime \
${tr1_srcdir}/ctype.h \
${tr1_srcdir}/cwchar \
${tr1_srcdir}/cwctype \
@@ -504,6 +507,7 @@ tr1_headers = \
${tr1_srcdir}/hashtable \
${tr1_srcdir}/inttypes.h \
${tr1_srcdir}/limits.h \
+ ${tr1_srcdir}/math.h \
${tr1_srcdir}/memory \
${tr1_srcdir}/mu_iterate.h \
${tr1_srcdir}/ref_fwd.h \
@@ -512,6 +516,7 @@ tr1_headers = \
${tr1_srcdir}/stdarg.h \
${tr1_srcdir}/stdint.h \
${tr1_srcdir}/stdio.h \
+ ${tr1_srcdir}/stdlib.h \
${tr1_srcdir}/tuple \
${tr1_srcdir}/tuple_iterate.h \
${tr1_srcdir}/type_traits \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index bd6c31331f9..d32cc112e3d 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -706,11 +706,14 @@ tr1_headers = \
${tr1_srcdir}/cfloat \
${tr1_srcdir}/cinttypes \
${tr1_srcdir}/climits \
+ ${tr1_srcdir}/cmath \
${tr1_srcdir}/common.h \
${tr1_srcdir}/complex \
${tr1_srcdir}/cstdarg \
${tr1_srcdir}/cstdint \
${tr1_srcdir}/cstdio \
+ ${tr1_srcdir}/cstdlib \
+ ${tr1_srcdir}/ctime \
${tr1_srcdir}/ctype.h \
${tr1_srcdir}/cwchar \
${tr1_srcdir}/cwctype \
@@ -721,6 +724,7 @@ tr1_headers = \
${tr1_srcdir}/hashtable \
${tr1_srcdir}/inttypes.h \
${tr1_srcdir}/limits.h \
+ ${tr1_srcdir}/math.h \
${tr1_srcdir}/memory \
${tr1_srcdir}/mu_iterate.h \
${tr1_srcdir}/ref_fwd.h \
@@ -729,6 +733,7 @@ tr1_headers = \
${tr1_srcdir}/stdarg.h \
${tr1_srcdir}/stdint.h \
${tr1_srcdir}/stdio.h \
+ ${tr1_srcdir}/stdlib.h \
${tr1_srcdir}/tuple \
${tr1_srcdir}/tuple_iterate.h \
${tr1_srcdir}/type_traits \
diff --git a/libstdc++-v3/include/tr1/cinttypes b/libstdc++-v3/include/tr1/cinttypes
index 2e0e9d83a4b..25e5c075e4a 100644
--- a/libstdc++-v3/include/tr1/cinttypes
+++ b/libstdc++-v3/include/tr1/cinttypes
@@ -56,16 +56,17 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
// functions
using ::imaxabs;
-
- inline intmax_t
- abs(intmax_t __i)
- { return imaxabs(__i); }
+
+ // May collide with _Longlong abs(_Longlong), and is not described
+ // anywhere outside the synopsis. Likely, a defect.
+ //
+ // intmax_t abs(intmax_t)
using ::imaxdiv;
-
- inline imaxdiv_t
- div(intmax_t __numer, intmax_t __denom)
- { return imaxdiv(__numer, __denom); }
+
+ // Likewise, with lldiv_t div(_Longlong, _Longlong).
+ //
+ // imaxdiv_t div(intmax_t, intmax_t)
using ::strtoimax;
using ::strtoumax;
diff --git a/libstdc++-v3/include/tr1/cmath b/libstdc++-v3/include/tr1/cmath
new file mode 100644
index 00000000000..ec11b26adc5
--- /dev/null
+++ b/libstdc++-v3/include/tr1/cmath
@@ -0,0 +1,298 @@
+// TR1 cmath -*- C++ -*-
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file
+ * This is a TR1 C++ Library header.
+ */
+
+#ifndef _TR1_CMATH
+#define _TR1_CMATH 1
+
+#include <bits/c++config.h>
+#include <cmath>
+
+#if _GLIBCXX_USE_C99_MATH_TR1
+
+#undef acosh
+#undef acoshf
+#undef acoshl
+#undef asinh
+#undef asinhf
+#undef asinhl
+#undef atanh
+#undef atanhf
+#undef atanhl
+#undef cbrt
+#undef cbrtf
+#undef cbrtl
+#undef copysign
+#undef copysignf
+#undef copysignl
+#undef erf
+#undef erff
+#undef erfl
+#undef erfc
+#undef erfcf
+#undef erfcl
+#undef exp2
+#undef exp2f
+#undef exp2l
+#undef expm1
+#undef expm1f
+#undef expm1l
+#undef fdim
+#undef fdimf
+#undef fdiml
+#undef fma
+#undef fmaf
+#undef fmal
+#undef fmax
+#undef fmaxf
+#undef fmaxl
+#undef fmin
+#undef fminf
+#undef fminl
+#undef hypot
+#undef hypotf
+#undef hypotl
+#undef ilogb
+#undef ilogbf
+#undef ilogbl
+#undef lgamma
+#undef lgammaf
+#undef lgammal
+#undef llrint
+#undef llrintf
+#undef llrintl
+#undef llround
+#undef llroundf
+#undef llroundl
+#undef log1p
+#undef log1pf
+#undef log1pl
+#undef log2
+#undef log2f
+#undef log2l
+#undef logb
+#undef logbf
+#undef logbl
+#undef lrint
+#undef lrintf
+#undef lrintl
+#undef lround
+#undef lroundf
+#undef lroundl
+#undef nan
+#undef nanf
+#undef nanl
+#undef nearbyint
+#undef nearbyintf
+#undef nearbyintl
+#undef nextafter
+#undef nextafterf
+#undef nextafterl
+#undef nexttoward
+#undef nexttowardf
+#undef nexttowardl
+#undef remainder
+#undef remainderf
+#undef remainderl
+#undef remquo
+#undef remquo
+#undef remquo
+#undef rint
+#undef rintf
+#undef rintl
+#undef round
+#undef roundf
+#undef roundl
+#undef scalbln
+#undef scalblnf
+#undef scalblnl
+#undef scalbn
+#undef scalbnf
+#undef scalbnl
+#undef tgamma
+#undef tgammaf
+#undef tgammal
+#undef trunc
+#undef truncf
+#undef truncl
+
+// namespace std::tr1
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE(tr1)
+
+ using ::acosh;
+ using ::acoshf;
+ using ::acoshl;
+
+ using ::asinh;
+ using ::asinhf;
+ using ::asinhl;
+
+ using ::atanh;
+ using ::atanhf;
+ using ::atanhl;
+
+ using ::cbrt;
+ using ::cbrtf;
+ using ::cbrtl;
+
+ using ::copysign;
+ using ::copysignf;
+ using ::copysignl;
+
+ using ::erf;
+ using ::erff;
+ using ::erfl;
+
+ using ::erfc;
+ using ::erfcf;
+ using ::erfcl;
+
+ using ::exp2;
+ using ::exp2f;
+ using ::exp2l;
+
+ using ::expm1;
+ using ::expm1f;
+ using ::expm1l;
+
+ using ::fdim;
+ using ::fdimf;
+ using ::fdiml;
+
+ using ::fma;
+ using ::fmaf;
+ using ::fmal;
+
+ using ::fmax;
+ using ::fmaxf;
+ using ::fmaxl;
+
+ using ::fmin;
+ using ::fminf;
+ using ::fminl;
+
+ using ::hypot;
+ using ::hypotf;
+ using ::hypotl;
+
+ using ::ilogb;
+ using ::ilogbf;
+ using ::ilogbl;
+
+ using ::lgamma;
+ using ::lgammaf;
+ using ::lgammal;
+
+ using ::llrint;
+ using ::llrintf;
+ using ::llrintl;
+
+ using ::llround;
+ using ::llroundf;
+ using ::llroundl;
+
+ using ::log1p;
+ using ::log1pf;
+ using ::log1pl;
+
+ using ::log2;
+ using ::log2f;
+ using ::log2l;
+
+ using ::logb;
+ using ::logbf;
+ using ::logbl;
+
+ using ::lrint;
+ using ::lrintf;
+ using ::lrintl;
+
+ using ::lround;
+ using ::lroundf;
+ using ::lroundl;
+
+ using ::nan;
+ using ::nanf;
+ using ::nanl;
+
+ using ::nearbyint;
+ using ::nearbyintf;
+ using ::nearbyintl;
+
+ using ::nextafter;
+ using ::nextafterf;
+ using ::nextafterl;
+
+ using ::nexttoward;
+ using ::nexttowardf;
+ using ::nexttowardl;
+
+ using ::remainder;
+ using ::remainderf;
+ using ::remainderl;
+
+ using ::remquo;
+ using ::remquo;
+ using ::remquo;
+
+ using ::rint;
+ using ::rintf;
+ using ::rintl;
+
+ using ::round;
+ using ::roundf;
+ using ::roundl;
+
+ using ::scalbln;
+ using ::scalblnf;
+ using ::scalblnl;
+
+ using ::scalbn;
+ using ::scalbnf;
+ using ::scalbnl;
+
+ using ::tgamma;
+ using ::tgammaf;
+ using ::tgammal;
+
+ using ::trunc;
+ using ::truncf;
+ using ::truncl;
+
+_GLIBCXX_END_NAMESPACE
+}
+
+#endif
+
+#endif
diff --git a/libstdc++-v3/include/tr1/cstdlib b/libstdc++-v3/include/tr1/cstdlib
new file mode 100644
index 00000000000..49ccb959cbd
--- /dev/null
+++ b/libstdc++-v3/include/tr1/cstdlib
@@ -0,0 +1,79 @@
+// TR1 cstdlib -*- C++ -*-
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file
+ * This is a TR1 C++ Library header.
+ */
+
+#ifndef _TR1_CSTDLIB
+#define _TR1_CSTDLIB 1
+
+#include <bits/c++config.h>
+
+#if _GLIBCXX_HOSTED
+
+#include <cstdlib>
+
+// namespace std::tr1
+namespace std
+{
+_GLIBCXX_BEGIN_NAMESPACE(tr1)
+
+#if _GLIBCXX_USE_C99
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+ // types
+ using std::lldiv_t;
+
+ // functions
+ using std::llabs;
+ using std::lldiv;
+#endif
+
+ using std::atoll;
+ using std::strtoll;
+ using std::strtoull;
+
+ using std::strtof;
+ using std::strtold;
+
+ // overloads
+ using std::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+ using std::div;
+#endif
+
+#endif
+
+_GLIBCXX_END_NAMESPACE
+}
+
+#endif
+
+#endif
diff --git a/libstdc++-v3/include/tr1/ctime b/libstdc++-v3/include/tr1/ctime
new file mode 100644
index 00000000000..420bfdb301a
--- /dev/null
+++ b/libstdc++-v3/include/tr1/ctime
@@ -0,0 +1,39 @@
+// TR1 ctime -*- C++ -*-
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file
+ * This is a TR1 C++ Library header.
+ */
+
+#ifndef _TR1_CTIME
+#define _TR1_CTIME 1
+
+#include <ctime>
+
+#endif
diff --git a/libstdc++-v3/include/tr1/inttypes.h b/libstdc++-v3/include/tr1/inttypes.h
index a750daf4eb1..31901cc92e9 100644
--- a/libstdc++-v3/include/tr1/inttypes.h
+++ b/libstdc++-v3/include/tr1/inttypes.h
@@ -36,11 +36,4 @@
#include <tr1/cinttypes>
-#if _GLIBCXX_USE_C99_INTTYPES_TR1
-
-using std::tr1::abs;
-using std::tr1::div;
-
-#endif
-
#endif
diff --git a/libstdc++-v3/include/tr1/math.h b/libstdc++-v3/include/tr1/math.h
new file mode 100644
index 00000000000..a0dd24ba4ac
--- /dev/null
+++ b/libstdc++-v3/include/tr1/math.h
@@ -0,0 +1,39 @@
+// TR1 math.h -*- C++ -*-
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file
+ * This is a TR1 C++ Library header.
+ */
+
+#ifndef _TR1_MATH_H
+#define _TR1_MATH_H 1
+
+#include <tr1/cmath>
+
+#endif
diff --git a/libstdc++-v3/include/tr1/stdlib.h b/libstdc++-v3/include/tr1/stdlib.h
new file mode 100644
index 00000000000..f58e4f00019
--- /dev/null
+++ b/libstdc++-v3/include/tr1/stdlib.h
@@ -0,0 +1,56 @@
+// TR1 stdlib.h -*- C++ -*-
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+/** @file
+ * This is a TR1 C++ Library header.
+ */
+
+#ifndef _TR1_STDLIB_H
+#define _TR1_STDLIB_H 1
+
+#include <tr1/cstdlib>
+
+#if _GLIBCXX_HOSTED
+
+#if _GLIBCXX_USE_C99
+
+using std::tr1::atoll;
+using std::tr1::strtoll;
+using std::tr1::strtoull;
+
+using std::tr1::abs;
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+using std::tr1::div;
+#endif
+
+#endif
+
+#endif
+
+#endif
diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
index 353bf628c66..cd5a0378554 100644
--- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
+++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
@@ -41,10 +41,10 @@ void test01()
std::tr1::imaxdiv_t dret;
ret = std::tr1::imaxabs(i);
- ret = std::tr1::abs(i);
+ // ret = std::tr1::abs(i);
dret = std::tr1::imaxdiv(numer, denom);
- dret = std::tr1::div(numer, denom);
+ // dret = std::tr1::div(numer, denom);
ret = std::tr1::strtoimax(s, endptr, base);
uret = std::tr1::strtoumax(s, endptr, base);
diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
new file mode 100644
index 00000000000..f97cd8a7dd9
--- /dev/null
+++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
@@ -0,0 +1,187 @@
+// { dg-do compile }
+
+// 2006-02-07 Paolo Carlini <pcarlini@suse.de>
+//
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 8.16 Additions to header <cmath>
+
+#include <tr1/cmath>
+
+void test01()
+{
+#if _GLIBCXX_USE_C99_MATH_TR1
+
+ double d0 = 0.0;
+ float f0 = 0.0f;
+ long double ld0 = 0.0l;
+ const char* str = "NAN";
+ int* pquo = 0;
+ long lex = 0l;
+ int ex = 0;
+
+ double ret;
+ float fret;
+ long double ldret;
+ int iret;
+ long lret;
+ long long llret;
+
+ ret = acosh(d0);
+ fret = acoshf(f0);
+ ldret = acoshl(ld0);
+
+ ret = asinh(d0);
+ fret = asinhf(f0);
+ ldret = asinhl(ld0);
+
+ ret = atanh(d0);
+ fret = atanhf(f0);
+ ldret = atanhl(ld0);
+
+ ret = cbrt(d0);
+ fret = cbrtf(f0);
+ ldret = cbrtl(ld0);
+
+ ret = copysign(d0, d0);
+ fret = copysignf(f0, f0);
+ ldret = copysignl(ld0, ld0);
+
+ ret = erf(d0);
+ fret = erff(f0);
+ ldret = erfl(ld0);
+
+ ret = erfc(d0);
+ fret = erfcf(f0);
+ ldret = erfcl(ld0);
+
+ ret = exp2(d0);
+ fret = exp2f(f0);
+ ldret = exp2l(ld0);
+
+ ret = expm1(d0);
+ fret = expm1f(f0);
+ ldret = expm1l(ld0);
+
+ ret = fdim(d0, d0);
+ fret = fdimf(f0, f0);
+ ldret = fdiml(ld0, ld0);
+
+ ret = fma(d0, d0, d0);
+ fret = fmaf(f0, f0, f0);
+ ldret = fmal(ld0, ld0, ld0);
+
+ ret = fmax(d0, d0);
+ fret = fmaxf(f0, f0);
+ ldret = fmaxl(ld0, ld0);
+
+ ret = fmin(d0, d0);
+ fret = fminf(f0, f0);
+ ldret = fminl(ld0, ld0);
+
+ ret = hypot(d0, d0);
+ fret = hypotf(f0, f0);
+ ldret = hypotl(ld0, ld0);
+
+ iret = ilogb(d0);
+ iret = ilogbf(f0);
+ iret = ilogbl(ld0);
+
+ ret = lgamma(d0);
+ fret = lgammaf(f0);
+ ldret = lgammal(ld0);
+
+ llret = llrint(d0);
+ llret = llrintf(f0);
+ llret = llrintl(ld0);
+
+ llret = llround(d0);
+ llret = llroundf(f0);
+ llret = llroundl(ld0);
+
+ ret = log1p(d0);
+ fret = log1pf(f0);
+ ldret = log1pl(ld0);
+
+ ret = log2(d0);
+ fret = log2f(f0);
+ ldret = log2l(ld0);
+
+ ret = logb(d0);
+ fret = logbf(f0);
+ ldret = logbl(ld0);
+
+ lret = lrint(d0);
+ lret = lrintf(f0);
+ lret = lrintl(ld0);
+
+ lret = lround(d0);
+ lret = lroundf(f0);
+ lret = lroundl(ld0);
+
+ ret = nan(str);
+ fret = nanf(str);
+ ldret = nanl(str);
+
+ ret = nearbyint(d0);
+ fret = nearbyintf(f0);
+ ldret = nearbyintl(ld0);
+
+ ret = nextafter(d0, d0);
+ fret = nextafterf(f0, f0);
+ ldret = nextafterl(ld0, ld0);
+
+ ret = nexttoward(d0, d0);
+ fret = nexttowardf(f0, f0);
+ ldret = nexttowardl(ld0, ld0);
+
+ ret = remainder(d0, d0);
+ fret = remainderf(f0, f0);
+ ldret = remainderl(ld0, ld0);
+
+ ret = remquo(d0, d0, pquo);
+ fret = remquo(f0, f0, pquo);
+ ldret = remquo(ld0, ld0, pquo);
+
+ ret = rint(d0);
+ fret = rintf(f0);
+ ldret = rintl(ld0);
+
+ ret = round(d0);
+ fret = roundf(f0);
+ ldret = roundl(ld0);
+
+ ret = scalbln(d0, lex);
+ fret = scalblnf(f0, lex);
+ ldret = scalblnl(ld0, lex);
+
+ ret = scalbn(d0, ex);
+ fret = scalbnf(f0, ex);
+ ldret = scalbnl(ld0, ex);
+
+ ret = tgamma(d0);
+ fret = tgammaf(f0);
+ ldret = tgammal(ld0);
+
+ ret = trunc(d0);
+ fret = truncf(f0);
+ ldret = truncl(ld0);
+
+#endif
+}
diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
new file mode 100644
index 00000000000..316482836e1
--- /dev/null
+++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
@@ -0,0 +1,66 @@
+// { dg-do compile }
+
+// 2006-02-07 Paolo Carlini <pcarlini@suse.de>
+//
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 8.25 Additions to header <cstdlib>
+
+#include <tr1/cstdlib>
+
+#if _GLIBCXX_HOSTED
+
+void test01()
+{
+#if _GLIBCXX_USE_C99
+
+ long long i = 0;
+ const char* s = 0;
+ char** endptr = 0;
+ int base = 0;
+
+ long long ret;
+ unsigned long long uret;
+ float fret;
+ long double ldret;
+
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+ long long numer = 0, denom = 0;
+ std::tr1::lldiv_t dret;
+
+ ret = std::tr1::llabs(i);
+ dret = std::tr1::lldiv(numer, denom);
+#endif
+
+ ret = std::tr1::atoll(s);
+ ret = std::tr1::strtoll(s, endptr, base);
+ uret = std::tr1::strtoull(s, endptr, base);
+
+ fret = std::tr1::strtof(s, endptr);
+ ldret = std::tr1::strtold(s, endptr);
+
+ ret = std::tr1::abs(i);
+#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
+ dret = std::tr1::div(numer, denom);
+#endif
+
+#endif
+}
+
+#endif
diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types.cc
new file mode 100644
index 00000000000..aa1e21dd92c
--- /dev/null
+++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types.cc
@@ -0,0 +1,38 @@
+// { dg-do compile }
+
+// 2006-02-07 Paolo Carlini <pcarlini@suse.de>
+//
+// Copyright (C) 2006 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 8.25 Additions to header <cstdlib>
+
+#include <tr1/cstdlib>
+
+#if _GLIBCXX_HOSTED
+
+void test01()
+{
+#if _GLIBCXX_USE_C99
+
+ typedef std::tr1::lldiv_t my_lldiv_t;
+
+#endif
+}
+
+#endif
diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
index adec4cd1346..547bce378cc 100644
--- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
+++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
@@ -67,15 +67,11 @@ void test01(int dummy, ...)
long double ldret;
ldret = std::tr1::wcstold(nptr2, endptr2);
-#ifdef _GLIBCXX_USE_LONG_LONG
- const wchar_t* nptr3 = 0;
- wchar_t** endptr3 = 0;
int base = 0;
long long llret;
unsigned long long ullret;
- llret = std::tr1::wcstoll(nptr3, endptr3, base);
- ullret = std::tr1::wcstoull(nptr3, endptr3, base);
-#endif
+ llret = std::tr1::wcstoll(nptr2, endptr2, base);
+ ullret = std::tr1::wcstoull(nptr2, endptr2, base);
#endif
}
diff --git a/libstdc++-v3/testsuite/tr1/headers.cc b/libstdc++-v3/testsuite/tr1/headers.cc
index f9c1045a1cd..765abae1829 100644
--- a/libstdc++-v3/testsuite/tr1/headers.cc
+++ b/libstdc++-v3/testsuite/tr1/headers.cc
@@ -26,10 +26,13 @@
#include <tr1/cfloat>
#include <tr1/cinttypes>
#include <tr1/climits>
+#include <tr1/cmath>
#include <tr1/complex>
#include <tr1/cstdarg>
#include <tr1/cstdint>
#include <tr1/cstdio>
+#include <tr1/cstdlib>
+#include <tr1/ctime>
#include <tr1/ctype.h>
#include <tr1/cwchar>
#include <tr1/cwctype>
@@ -39,10 +42,12 @@
#include <tr1/hashtable>
#include <tr1/inttypes.h>
#include <tr1/limits.h>
+#include <tr1/math.h>
#include <tr1/memory>
#include <tr1/stdarg.h>
#include <tr1/stdint.h>
#include <tr1/stdio.h>
+#include <tr1/stdlib.h>
#include <tr1/tuple>
#include <tr1/type_traits>
#include <tr1/unordered_set>