diff options
47 files changed, 1572 insertions, 597 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ca688a0..dd86ffb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,97 @@ +2015-11-13 Jennifer Yao <jenny.hyphen.fa@gmail.com> + Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/58393 + PR libstdc++/61580 + * acinclude.m4 (GLIBCXX_ENABLE_C99): Perform tests twice, with + -std=c++11 as well as -std=c++98, and define separate macros for each. + Cache the results of checking for complex math and wide character + functions. Reformat for readability. + * config.h.in: Regenerate. + * include/bits/c++config: Define _GLIBCXX_USE_C99_XXX macros to + either _GLIBCXX98_USE_C99_XXX or _GLIBCXX11_USE_C99_XXX according to + language standard in use. + * config/locale/dragonfly/c_locale.h (std::__convert_from_v): Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO. + * config/locale/generic/c_locale.h (std::__convert_from_v): Likewise. + * config/locale/gnu/c_locale.h (std::__convert_from_v): Likewise. + * config/os/bsd/dragonfly/os_defines.h: Define _GLIBCXX_USE_C99_STDIO, + _GLIBCXX_USE_C99_STDLIB, and _GLIBCXX_USE_C99_WCHAR. + * configure: Regenerate. + * include/bits/basic_string.h: Make numeric conversion functions + depend on _GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, or + _GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99. + * include/ext/vstring.h: Likewise. + * include/bits/locale_facets.tcc (std::num_put::_M_insert_float): + Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO. + * include/bits/locale_facets_nonio.tcc (std::money_put::do_put): + Likewise. + * include/c_compatibility/math.h: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_MATH. + * include/c_compatibility/wchar.h: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_WCHAR. + * include/c_global/cstdio: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDIO. + * include/c_global/cstdlib: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDLIB. + * include/c_global/cwchar: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_WCHAR. + * include/c_std/cstdio: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDIO. + * include/c_std/cstdlib: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDLIB. + * include/c_std/cwchar: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_WCHAR. + * include/tr1/cstdio: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDIO. + * include/tr1/cstdlib: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDLIB. + * include/tr1/cwchar: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_WCHAR. + * include/tr1/stdlib.h: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDLIB. + * src/c++98/locale_facets.cc (std::__num_base::_S_format_float): + Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO. + * testsuite/18_support/exception_ptr/60612-terminate.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB. + * testsuite/18_support/exception_ptr/60612-unexpected.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc + (test01): Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stof.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stoi.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stol.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stold.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stoll.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stoul.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + stoull.cc: Likewise. + * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/ + to_wstring.cc: Likewise. + * testsuite/26_numerics/headers/cstdlib/13943.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB. + * testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise. + * testsuite/lib/libstdc++.exp (check_v3_target_string_conversions): + Change preprocessor #if conditional so that it uses + _GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, and + _GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99. + * testsuite/tr1/8_c_compatibility/cmath/templates.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_MATH. + * testsuite/tr1/8_c_compatibility/cstdio/functions.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO. + * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB. + * testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Likewise. + * testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Replace + _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR. + * testsuite/util/testsuite_fs.h: Replace _GLIBCXX_USE_C99 with + _GLIBCXX_USE_C99_STDIO. + 2015-11-13 Jonathan Wakely <jwakely@redhat.com> * include/experimental/bits/shared_ptr.h: Tweak comments. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index abf2e93..deefa04 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -915,234 +915,438 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ GLIBCXX_ENABLE(c99,$1,,[turns on ISO/IEC 9899:1999 support]) if test x"$enable_c99" = x"yes"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS - AC_LANG_SAVE - AC_LANG_CPLUSPLUS + # Use -std=c++98 (instead of -std=gnu++98) because leaving __STRICT_ANSI__ + # undefined may cause fake C99 facilities, like pre-standard snprintf, + # to be spuriously enabled. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++98" + ac_save_LIBS="$LIBS" + ac_save_gcc_no_link="$gcc_no_link" + + if test x$gcc_no_link != xyes; then + # Use -fno-exceptions to that the C driver can link these tests without + # hitting undefined references to personality routines. + CXXFLAGS="$CXXFLAGS -fno-exceptions" + AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ + # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK + gcc_no_link=yes + ]) + fi - # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ - # undefined and fake C99 facilities - like pre-standard snprintf - may be - # spuriously enabled. - # Long term, -std=c++0x could be even better, could manage to explicitly - # request C99 facilities to the underlying C headers. - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=c++98" - ac_save_LIBS="$LIBS" - ac_save_gcc_no_link="$gcc_no_link" + # Check for the existence of <math.h> functions used if C99 is enabled. + AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++98]) + AC_CACHE_VAL(glibcxx_cv_c99_math_cxx98, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <math.h> + volatile double d1, d2; + volatile int i;], + [i = fpclassify(d1); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); + ], [glibcxx_cv_c99_math_cxx98=yes], [glibcxx_cv_c99_math_cxx98=no]) + ]) + AC_MSG_RESULT($glibcxx_cv_c99_math_cxx98) + if test x"$glibcxx_cv_c99_math_cxx98" = x"yes"; then + AC_DEFINE(_GLIBCXX98_USE_C99_MATH, 1, + [Define if C99 functions or macros in <math.h> should be imported + in <cmath> in namespace std for C++98.]) + fi - if test x$gcc_no_link != xyes; then - # Use -fno-exceptions to that the C driver can link these tests without - # hitting undefined references to personality routines. - CXXFLAGS="$CXXFLAGS -fno-exceptions" - AC_CHECK_LIB(m, sin, [ - LIBS="$LIBS -lm" - ], [ - # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK - gcc_no_link=yes + # Check for the existence of <complex.h> complex math functions. + # This is necessary even though libstdc++ uses the builtin versions + # of these functions, because if the builtin cannot be used, a reference + # to the library function is emitted. + AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) + AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) + if test x"$ac_has_complex_h" = x"yes"; then + AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++98]) + AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx98, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <complex.h> + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld;], + [f = cabsf(tmpf); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); + ], [glibcxx_cv_c99_complex_cxx98=yes], [glibcxx_cv_c99_complex_cxx98=no]) + ]) + fi + AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx98) + if test x"$glibcxx_cv_c99_complex_cxx98" = x"yes"; then + AC_DEFINE(_GLIBCXX98_USE_C99_COMPLEX, 1, + [Define if C99 functions in <complex.h> should be used in + <complex> for C++98. Using compiler builtins for these functions + requires corresponding C99 library functions to be present.]) + fi + + # Check for the existence in <stdio.h> of vscanf, et. al. + AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++98]) + AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx98, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <stdio.h> + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + }], [], + [glibcxx_cv_c99_stdio_cxx98=yes], [glibcxx_cv_c99_stdio_cxx98=no]) ]) - fi + AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx98) + if test x"$glibcxx_cv_c99_stdio_cxx98" = x"yes"; then + AC_DEFINE(_GLIBCXX98_USE_C99_STDIO, 1, + [Define if C99 functions or macros in <stdio.h> should be imported + in <cstdio> in namespace std for C++98.]) + fi - # Check for the existence of <math.h> functions used if C99 is enabled. - AC_MSG_CHECKING([for ISO C99 support in <math.h>]) - AC_CACHE_VAL(glibcxx_cv_c99_math, [ - GCC_TRY_COMPILE_OR_LINK( - [#include <math.h> - volatile double d1, d2; - volatile int i;], - [i = fpclassify(d1); - i = isfinite(d1); - i = isinf(d1); - i = isnan(d1); - i = isnormal(d1); - i = signbit(d1); - i = isgreater(d1, d2); - i = isgreaterequal(d1, d2); - i = isless(d1, d2); - i = islessequal(d1, d2); - i = islessgreater(d1, d2); - i = islessgreater(d1, d2); - i = isunordered(d1, d2); - ],[glibcxx_cv_c99_math=yes], [glibcxx_cv_c99_math=no]) - ]) - AC_MSG_RESULT($glibcxx_cv_c99_math) - if test x"$glibcxx_cv_c99_math" = x"yes"; then - AC_DEFINE(_GLIBCXX_USE_C99_MATH, 1, - [Define if C99 functions or macros in <math.h> should be imported - in <cmath> in namespace std.]) - fi + # Check for the existence in <wchar.h> of wcstold, etc. + if test x"$ac_has_wchar_h" = xyes && + test x"$ac_has_wctype_h" = xyes; then + AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++98]) + AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx98, [ + AC_TRY_COMPILE([#include <wchar.h> + namespace test + { + using ::wcstold; + using ::wcstoll; + using ::wcstoull; + } + ], [], [glibcxx_cv_c99_wchar_cxx98=yes], [glibcxx_cv_c99_wchar_cxx98=no]) + ]) - # Check for the existence of <complex.h> complex math functions. - # This is necessary even though libstdc++ uses the builtin versions - # of these functions, because if the builtin cannot be used, a reference - # to the library function is emitted. - AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) - AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) - glibcxx_cv_c99_complex=no; - if test x"$ac_has_complex_h" = x"yes"; then - AC_MSG_CHECKING([for ISO C99 support in <complex.h>]) - GCC_TRY_COMPILE_OR_LINK( - [#include <complex.h> - typedef __complex__ float float_type; - typedef __complex__ double double_type; - typedef __complex__ long double ld_type; - volatile float_type tmpf; - volatile double_type tmpd; - volatile ld_type tmpld; - volatile float f; - volatile double d; - volatile long double ld;], - [f = cabsf(tmpf); - f = cargf(tmpf); - tmpf = ccosf(tmpf); - tmpf = ccoshf(tmpf); - tmpf = cexpf(tmpf); - tmpf = clogf(tmpf); - tmpf = csinf(tmpf); - tmpf = csinhf(tmpf); - tmpf = csqrtf(tmpf); - tmpf = ctanf(tmpf); - tmpf = ctanhf(tmpf); - tmpf = cpowf(tmpf, tmpf); - tmpf = cprojf(tmpf); - d = cabs(tmpd); - d = carg(tmpd); - tmpd = ccos(tmpd); - tmpd = ccosh(tmpd); - tmpd = cexp(tmpd); - tmpd = clog(tmpd); - tmpd = csin(tmpd); - tmpd = csinh(tmpd); - tmpd = csqrt(tmpd); - tmpd = ctan(tmpd); - tmpd = ctanh(tmpd); - tmpd = cpow(tmpd, tmpd); - tmpd = cproj(tmpd); - ld = cabsl(tmpld); - ld = cargl(tmpld); - tmpld = ccosl(tmpld); - tmpld = ccoshl(tmpld); - tmpld = cexpl(tmpld); - tmpld = clogl(tmpld); - tmpld = csinl(tmpld); - tmpld = csinhl(tmpld); - tmpld = csqrtl(tmpld); - tmpld = ctanl(tmpld); - tmpld = ctanhl(tmpld); - tmpld = cpowl(tmpld, tmpld); - tmpld = cprojl(tmpld); - ],[glibcxx_cv_c99_complex=yes], [glibcxx_cv_c99_complex=no]) - fi - AC_MSG_RESULT($glibcxx_cv_c99_complex) - if test x"$glibcxx_cv_c99_complex" = x"yes"; then - AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX, 1, - [Define if C99 functions in <complex.h> should be used in - <complex>. Using compiler builtins for these functions requires - corresponding C99 library functions to be present.]) - fi - - # Check for the existence in <stdio.h> of vscanf, et. al. - AC_MSG_CHECKING([for ISO C99 support in <stdio.h>]) - AC_CACHE_VAL(glibcxx_cv_c99_stdio, [ - GCC_TRY_COMPILE_OR_LINK( - [#include <stdio.h> - #include <stdarg.h> - void foo(char* fmt, ...) - { - va_list args; va_start(args, fmt); - vfscanf(stderr, "%i", args); - vscanf("%i", args); - vsnprintf(fmt, 0, "%i", args); - vsscanf(fmt, "%i", args); - snprintf(fmt, 0, "%i"); - }], [], - [glibcxx_cv_c99_stdio=yes], [glibcxx_cv_c99_stdio=no]) - ]) - AC_MSG_RESULT($glibcxx_cv_c99_stdio) - - # Check for the existence in <stdlib.h> of lldiv_t, et. al. - AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>]) - AC_CACHE_VAL(glibcxx_cv_c99_stdlib, [ - GCC_TRY_COMPILE_OR_LINK( - [#include <stdlib.h> - volatile float f; - volatile long double ld; - volatile unsigned long long ll; - lldiv_t mydivt;], - [char* tmp; - f = strtof("gnu", &tmp); - ld = strtold("gnu", &tmp); - ll = strtoll("gnu", &tmp, 10); - ll = strtoull("gnu", &tmp, 10); - ll = llabs(10); - mydivt = lldiv(10,1); - ll = mydivt.quot; - ll = mydivt.rem; - ll = atoll("10"); - _Exit(0); - ],[glibcxx_cv_c99_stdlib=yes], [glibcxx_cv_c99_stdlib=no]) - ]) - AC_MSG_RESULT($glibcxx_cv_c99_stdlib) - - # Check for the existence in <wchar.h> of wcstold, etc. - glibcxx_cv_c99_wchar=no; - if test x"$ac_has_wchar_h" = xyes && - test x"$ac_has_wctype_h" = xyes; then - AC_MSG_CHECKING([for ISO C99 support in <wchar.h>]) - AC_TRY_COMPILE([#include <wchar.h> - namespace test - { - using ::wcstold; - using ::wcstoll; - using ::wcstoull; - } - ],[],[glibcxx_cv_c99_wchar=yes], [glibcxx_cv_c99_wchar=no]) - - # Checks for wide character functions that may not be present. - # Injection of these is wrapped with guard macros. - # NB: only put functions here, instead of immediately above, if - # absolutely necessary. - AC_TRY_COMPILE([#include <wchar.h> - namespace test { using ::vfwscanf; } ], [], - [AC_DEFINE(HAVE_VFWSCANF,1, - [Defined if vfwscanf exists.])],[]) - - AC_TRY_COMPILE([#include <wchar.h> - namespace test { using ::vswscanf; } ], [], - [AC_DEFINE(HAVE_VSWSCANF,1, - [Defined if vswscanf exists.])],[]) - - AC_TRY_COMPILE([#include <wchar.h> - namespace test { using ::vwscanf; } ], [], - [AC_DEFINE(HAVE_VWSCANF,1,[Defined if vwscanf exists.])],[]) - - AC_TRY_COMPILE([#include <wchar.h> - namespace test { using ::wcstof; } ], [], - [AC_DEFINE(HAVE_WCSTOF,1,[Defined if wcstof exists.])],[]) - - AC_TRY_COMPILE([#include <wctype.h>], - [ wint_t t; int i = iswblank(t);], - [AC_DEFINE(HAVE_ISWBLANK,1, - [Defined if iswblank exists.])],[]) - - AC_MSG_RESULT($glibcxx_cv_c99_wchar) - fi - - # Option parsed, now set things appropriately. - if test x"$glibcxx_cv_c99_math" = x"no" || - test x"$glibcxx_cv_c99_complex" = x"no" || - test x"$glibcxx_cv_c99_stdio" = x"no" || - test x"$glibcxx_cv_c99_stdlib" = x"no" || - test x"$glibcxx_cv_c99_wchar" = x"no"; then - enable_c99=no; - else - AC_DEFINE(_GLIBCXX_USE_C99, 1, - [Define if C99 functions or macros from <wchar.h>, <math.h>, - <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) - fi + # Checks for wide character functions that may not be present. + # Injection of these is wrapped with guard macros. + # NB: only put functions here, instead of immediately above, if + # absolutely necessary. + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vfwscanf; }], [], + [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) - gcc_no_link="$ac_save_gcc_no_link" - LIBS="$ac_save_LIBS" - CXXFLAGS="$ac_save_CXXFLAGS" - AC_LANG_RESTORE + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vswscanf; }], [], + [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) + + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vwscanf; }], [], + [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) + + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::wcstof; }], [], + [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) + + AC_TRY_COMPILE([#include <wctype.h>], + [wint_t t; int i = iswblank(t);], + [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) + + AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx98) + if test x"$glibcxx_cv_c99_wchar_cxx98" = x"yes"; then + AC_DEFINE(_GLIBCXX98_USE_C99_WCHAR, 1, + [Define if C99 functions or macros in <wchar.h> should be imported + in <cwchar> in namespace std for C++98.]) + fi + fi + + # Option parsed, now set things appropriately. + if test x"$glibcxx_cv_c99_math_cxx98" = x"no" || + test x"$glibcxx_cv_c99_complex_cxx98" = x"no" || + test x"$glibcxx_cv_c99_stdio_cxx98" = x"no" || + test x"$glibcxx_cv_c99_stdlib_cxx98" = x"no" || + test x"$glibcxx_cv_c99_wchar_cxx98" = x"no"; then + enable_c99=no; + else + AC_DEFINE(_GLIBCXX_USE_C99, 1, + [Define if C99 functions or macros from <wchar.h>, <math.h>, + <complex.h>, <stdio.h>, and <stdlib.h> can be used or exposed.]) + fi + + gcc_no_link="$ac_save_gcc_no_link" + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + # Use -std=c++11 and test again for C99 library feature in C++11 mode. + # For the reasons given above we use -std=c++11 not -std=gnu++11. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++11" + ac_save_LIBS="$LIBS" + ac_save_gcc_no_link="$gcc_no_link" + + if test x$gcc_no_link != xyes; then + # Use -fno-exceptions to that the C driver can link these tests without + # hitting undefined references to personality routines. + CXXFLAGS="$CXXFLAGS -fno-exceptions" + AC_CHECK_LIB(m, sin, [LIBS="$LIBS -lm"], [ + # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK + gcc_no_link=yes + ]) + fi + + # Check for the existence of <math.h> functions used if C99 is enabled. + AC_MSG_CHECKING([for ISO C99 support in <math.h> for C++11]) + AC_CACHE_VAL(glibcxx_cv_c99_math_cxx11, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <math.h> + volatile double d1, d2; + volatile int i;], + [i = fpclassify(d1); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); + ], [glibcxx_cv_c99_math_cxx11=yes], [glibcxx_cv_c99_math_cxx11=no]) + ]) + AC_MSG_RESULT($glibcxx_cv_c99_math_cxx11) + if test x"$glibcxx_cv_c99_math_cxx11" = x"yes"; then + AC_DEFINE(_GLIBCXX11_USE_C99_MATH, 1, + [Define if C99 functions or macros in <math.h> should be imported + in <cmath> in namespace std for C++11.]) + fi + + # Check for the existence of <complex.h> complex math functions. + # This is necessary even though libstdc++ uses the builtin versions + # of these functions, because if the builtin cannot be used, a reference + # to the library function is emitted. + AC_CHECK_HEADERS(tgmath.h, ac_has_tgmath_h=yes, ac_has_tgmath_h=no) + AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) + if test x"$ac_has_complex_h" = x"yes"; then + AC_MSG_CHECKING([for ISO C99 support in <complex.h> for C++11]) + AC_CACHE_VAL(glibcxx_cv_c99_complex_cxx11, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <complex.h> + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld;], + [f = cabsf(tmpf); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); + ], [glibcxx_cv_c99_complex_cxx11=yes], [glibcxx_cv_c99_complex_cxx11=no]) + ]) + fi + AC_MSG_RESULT($glibcxx_cv_c99_complex_cxx11) + if test x"$glibcxx_cv_c99_complex_cxx11" = x"yes"; then + AC_DEFINE(_GLIBCXX11_USE_C99_COMPLEX, 1, + [Define if C99 functions in <complex.h> should be used in + <complex> for C++11. Using compiler builtins for these functions + requires corresponding C99 library functions to be present.]) + fi + + # Check for the existence in <stdio.h> of vscanf, et. al. + AC_MSG_CHECKING([for ISO C99 support in <stdio.h> for C++11]) + AC_CACHE_VAL(glibcxx_cv_c99_stdio_cxx11, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <stdio.h> + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + }], [], + [glibcxx_cv_c99_stdio_cxx11=yes], [glibcxx_cv_c99_stdio_cxx11=no]) + ]) + AC_MSG_RESULT($glibcxx_cv_c99_stdio_cxx11) + if test x"$glibcxx_cv_c99_stdio_cxx11" = x"yes"; then + AC_DEFINE(_GLIBCXX11_USE_C99_STDIO, 1, + [Define if C99 functions or macros in <stdio.h> should be imported + in <cstdio> in namespace std for C++11.]) + fi + + # Check for the existence in <stdlib.h> of lldiv_t, et. al. + AC_MSG_CHECKING([for ISO C99 support in <stdlib.h> for C++11]) + AC_CACHE_VAL(glibcxx_cv_c99_stdlib_cxx11, [ + GCC_TRY_COMPILE_OR_LINK( + [#include <stdlib.h> + volatile float f; + volatile long double ld; + volatile unsigned long long ll; + lldiv_t mydivt;], + [char* tmp; + f = strtof("gnu", &tmp); + ld = strtold("gnu", &tmp); + ll = strtoll("gnu", &tmp, 10); + ll = strtoull("gnu", &tmp, 10); + ll = llabs(10); + mydivt = lldiv(10,1); + ll = mydivt.quot; + ll = mydivt.rem; + ll = atoll("10"); + _Exit(0); + ], [glibcxx_cv_c99_stdlib_cxx11=yes], [glibcxx_cv_c99_stdlib_cxx11=no]) + ]) + AC_MSG_RESULT($glibcxx_cv_c99_stdlib_cxx11) + if test x"$glibcxx_cv_c99_stdlib_cxx11" = x"yes"; then + AC_DEFINE(_GLIBCXX11_USE_C99_STDLIB, 1, + [Define if C99 functions or macros in <stdlib.h> should be imported + in <cstdlib> in namespace std for C++11.]) + fi + + # Check for the existence in <wchar.h> of wcstold, etc. + if test x"$ac_has_wchar_h" = xyes && + test x"$ac_has_wctype_h" = xyes; then + AC_MSG_CHECKING([for ISO C99 support in <wchar.h> for C++11]) + AC_CACHE_VAL(glibcxx_cv_c99_wchar_cxx11, [ + AC_TRY_COMPILE([#include <wchar.h> + namespace test + { + using ::wcstold; + using ::wcstoll; + using ::wcstoull; + } + ], [], [glibcxx_cv_c99_wchar_cxx11=yes], [glibcxx_cv_c99_wchar_cxx11=no]) + ]) + + # Checks for wide character functions that may not be present. + # Injection of these is wrapped with guard macros. + # NB: only put functions here, instead of immediately above, if + # absolutely necessary. + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vfwscanf; }], [], + [AC_DEFINE(HAVE_VFWSCANF, 1, [Defined if vfwscanf exists.])], []) + + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vswscanf; }], [], + [AC_DEFINE(HAVE_VSWSCANF, 1, [Defined if vswscanf exists.])], []) + + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::vwscanf; }], [], + [AC_DEFINE(HAVE_VWSCANF, 1, [Defined if vwscanf exists.])], []) + + AC_TRY_COMPILE([#include <wchar.h> + namespace test { using ::wcstof; }], [], + [AC_DEFINE(HAVE_WCSTOF, 1, [Defined if wcstof exists.])], []) + + AC_TRY_COMPILE([#include <wctype.h>], + [wint_t t; int i = iswblank(t);], + [AC_DEFINE(HAVE_ISWBLANK, 1, [Defined if iswblank exists.])], []) + + AC_MSG_RESULT($glibcxx_cv_c99_wchar_cxx11) + if test x"$glibcxx_cv_c99_wchar_cxx11" = x"yes"; then + AC_DEFINE(_GLIBCXX11_USE_C99_WCHAR, 1, + [Define if C99 functions or macros in <wchar.h> should be imported + in <cwchar> in namespace std for C++11.]) + fi + fi + + gcc_no_link="$ac_save_gcc_no_link" + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE fi AC_MSG_CHECKING([for fully enabled ISO C99 support]) diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 8ae1c5b..f58b2f4 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -731,6 +731,44 @@ /* Version number of package */ #undef VERSION +/* Define if C99 functions in <complex.h> should be used in <complex> for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +#undef _GLIBCXX11_USE_C99_COMPLEX + +/* Define if C99 functions or macros in <math.h> should be imported in <cmath> + in namespace std for C++11. */ +#undef _GLIBCXX11_USE_C99_MATH + +/* Define if C99 functions or macros in <stdio.h> should be imported in + <cstdio> in namespace std for C++11. */ +#undef _GLIBCXX11_USE_C99_STDIO + +/* Define if C99 functions or macros in <stdlib.h> should be imported in + <cstdlib> in namespace std for C++11. */ +#undef _GLIBCXX11_USE_C99_STDLIB + +/* Define if C99 functions or macros in <wchar.h> should be imported in + <cwchar> in namespace std for C++11. */ +#undef _GLIBCXX11_USE_C99_WCHAR + +/* Define if C99 functions in <complex.h> should be used in <complex> for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +#undef _GLIBCXX98_USE_C99_COMPLEX + +/* Define if C99 functions or macros in <math.h> should be imported in <cmath> + in namespace std for C++98. */ +#undef _GLIBCXX98_USE_C99_MATH + +/* Define if C99 functions or macros in <stdio.h> should be imported in + <cstdio> in namespace std for C++98. */ +#undef _GLIBCXX98_USE_C99_STDIO + +/* Define if C99 functions or macros in <wchar.h> should be imported in + <cwchar> in namespace std for C++98. */ +#undef _GLIBCXX98_USE_C99_WCHAR + /* Define if the compiler supports C++11 atomics. */ #undef _GLIBCXX_ATOMIC_BUILTINS @@ -791,11 +829,6 @@ <stdio.h>, and <stdlib.h> can be used or exposed. */ #undef _GLIBCXX_USE_C99 -/* Define if C99 functions in <complex.h> should be used in <complex>. Using - compiler builtins for these functions requires corresponding C99 library - functions to be present. */ -#undef _GLIBCXX_USE_C99_COMPLEX - /* Define if C99 functions in <complex.h> should be used in <tr1/complex>. Using compiler builtins for these functions requires corresponding C99 library functions to be present. */ @@ -817,10 +850,6 @@ <tr1/cinttypes> in namespace std::tr1. */ #undef _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 -/* Define if C99 functions or macros in <math.h> should be imported in <cmath> - 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 diff --git a/libstdc++-v3/config/locale/dragonfly/c_locale.h b/libstdc++-v3/config/locale/dragonfly/c_locale.h index 5c17cfe..867a404 100644 --- a/libstdc++-v3/config/locale/dragonfly/c_locale.h +++ b/libstdc++-v3/config/locale/dragonfly/c_locale.h @@ -64,7 +64,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h index ee3ef869..fa7629f 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.h +++ b/libstdc++-v3/config/locale/generic/c_locale.h @@ -70,7 +70,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); diff --git a/libstdc++-v3/config/locale/gnu/c_locale.h b/libstdc++-v3/config/locale/gnu/c_locale.h index a1dc3d2..f8ddfeb 100644 --- a/libstdc++-v3/config/locale/gnu/c_locale.h +++ b/libstdc++-v3/config/locale/gnu/c_locale.h @@ -88,7 +88,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); diff --git a/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h b/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h index 2209129..055c5b6 100644 --- a/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h +++ b/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h @@ -30,6 +30,9 @@ // file will come before all others. #define _GLIBCXX_USE_C99 1 +#define _GLIBCXX_USE_C99_STDIO 1 +#define _GLIBCXX_USE_C99_STDLIB 1 +#define _GLIBCXX_USE_C99_WCHAR 1 #define _GLIBCXX_USE_C99_CHECK 1 #define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999)) #define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 1eb6db4..991818b 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -16542,29 +16542,26 @@ fi if test x"$enable_c99" = x"yes"; then - - ac_ext=cpp + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - # Use -std=c++98 because the default (-std=gnu++98) leaves __STRICT_ANSI__ - # undefined and fake C99 facilities - like pre-standard snprintf - may be - # spuriously enabled. - # Long term, -std=c++0x could be even better, could manage to explicitly - # request C99 facilities to the underlying C headers. - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=c++98" - ac_save_LIBS="$LIBS" - ac_save_gcc_no_link="$gcc_no_link" + # Use -std=c++98 (instead of -std=gnu++98) because leaving __STRICT_ANSI__ + # undefined may cause fake C99 facilities, like pre-standard snprintf, + # to be spuriously enabled. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++98" + ac_save_LIBS="$LIBS" + ac_save_gcc_no_link="$gcc_no_link" - if test x$gcc_no_link != xyes; then - # Use -fno-exceptions to that the C driver can link these tests without - # hitting undefined references to personality routines. - CXXFLAGS="$CXXFLAGS -fno-exceptions" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 + if test x$gcc_no_link != xyes; then + # Use -fno-exceptions to that the C driver can link these tests without + # hitting undefined references to personality routines. + CXXFLAGS="$CXXFLAGS -fno-exceptions" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 $as_echo_n "checking for sin in -lm... " >&6; } if test "${ac_cv_lib_m_sin+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -16604,56 +16601,646 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5 $as_echo "$ac_cv_lib_m_sin" >&6; } if test "x$ac_cv_lib_m_sin" = x""yes; then : + LIBS="$LIBS -lm" +else + + # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK + gcc_no_link=yes - LIBS="$LIBS -lm" +fi + + fi + # Check for the existence of <math.h> functions used if C99 is enabled. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <math.h> for C++98" >&5 +$as_echo_n "checking for ISO C99 support in <math.h> for C++98... " >&6; } + if test "${glibcxx_cv_c99_math_cxx98+set}" = set; then : + $as_echo_n "(cached) " >&6 else - # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK - gcc_no_link=yes + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <math.h> + volatile double d1, d2; + volatile int i; +int +main () +{ +i = fpclassify(d1); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_c99_math_cxx98=yes +else + glibcxx_cv_c99_math_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <math.h> + volatile double d1, d2; + volatile int i; +int +main () +{ +i = fpclassify(d1); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_c99_math_cxx98=yes +else + glibcxx_cv_c99_math_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi - fi +fi - # Check for the existence of <math.h> functions used if C99 is enabled. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <math.h>" >&5 -$as_echo_n "checking for ISO C99 support in <math.h>... " >&6; } - if test "${glibcxx_cv_c99_math+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_math_cxx98" >&5 +$as_echo "$glibcxx_cv_c99_math_cxx98" >&6; } + if test x"$glibcxx_cv_c99_math_cxx98" = x"yes"; then + +$as_echo "#define _GLIBCXX98_USE_C99_MATH 1" >>confdefs.h + + fi + + # Check for the existence of <complex.h> complex math functions. + # This is necessary even though libstdc++ uses the builtin versions + # of these functions, because if the builtin cannot be used, a reference + # to the library function is emitted. + for ac_header in tgmath.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "tgmath.h" "ac_cv_header_tgmath_h" "$ac_includes_default" +if test "x$ac_cv_header_tgmath_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TGMATH_H 1 +_ACEOF + ac_has_tgmath_h=yes +else + ac_has_tgmath_h=no +fi + +done + + for ac_header in complex.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default" +if test "x$ac_cv_header_complex_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_COMPLEX_H 1 +_ACEOF + ac_has_complex_h=yes +else + ac_has_complex_h=no +fi + +done + + if test x"$ac_has_complex_h" = x"yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <complex.h> for C++98" >&5 +$as_echo_n "checking for ISO C99 support in <complex.h> for C++98... " >&6; } + if test "${glibcxx_cv_c99_complex_cxx98+set}" = set; then : $as_echo_n "(cached) " >&6 else + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <complex.h> + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld; +int +main () +{ +f = cabsf(tmpf); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_c99_complex_cxx98=yes +else + glibcxx_cv_c99_complex_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <complex.h> + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld; +int +main () +{ +f = cabsf(tmpf); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_c99_complex_cxx98=yes +else + glibcxx_cv_c99_complex_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_complex_cxx98" >&5 +$as_echo "$glibcxx_cv_c99_complex_cxx98" >&6; } + if test x"$glibcxx_cv_c99_complex_cxx98" = x"yes"; then + +$as_echo "#define _GLIBCXX98_USE_C99_COMPLEX 1" >>confdefs.h + + fi + + # Check for the existence in <stdio.h> of vscanf, et. al. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdio.h> for C++98" >&5 +$as_echo_n "checking for ISO C99 support in <stdio.h> for C++98... " >&6; } + if test "${glibcxx_cv_c99_stdio_cxx98+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_c99_stdio_cxx98=yes +else + glibcxx_cv_c99_stdio_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + glibcxx_cv_c99_stdio_cxx98=yes +else + glibcxx_cv_c99_stdio_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdio_cxx98" >&5 +$as_echo "$glibcxx_cv_c99_stdio_cxx98" >&6; } + if test x"$glibcxx_cv_c99_stdio_cxx98" = x"yes"; then + +$as_echo "#define _GLIBCXX98_USE_C99_STDIO 1" >>confdefs.h + + fi + + # Check for the existence in <wchar.h> of wcstold, etc. + if test x"$ac_has_wchar_h" = xyes && + test x"$ac_has_wctype_h" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <wchar.h> for C++98" >&5 +$as_echo_n "checking for ISO C99 support in <wchar.h> for C++98... " >&6; } + if test "${glibcxx_cv_c99_wchar_cxx98+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wchar.h> + namespace test + { + using ::wcstold; + using ::wcstoll; + using ::wcstoull; + } + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_c99_wchar_cxx98=yes +else + glibcxx_cv_c99_wchar_cxx98=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + + + # Checks for wide character functions that may not be present. + # Injection of these is wrapped with guard macros. + # NB: only put functions here, instead of immediately above, if + # absolutely necessary. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wchar.h> + namespace test { using ::vfwscanf; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_VFWSCANF 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wchar.h> + namespace test { using ::vswscanf; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_VSWSCANF 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wchar.h> + namespace test { using ::vwscanf; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_VWSCANF 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wchar.h> + namespace test { using ::wcstof; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_WCSTOF 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <wctype.h> +int +main () +{ +wint_t t; int i = iswblank(t); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_ISWBLANK 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_wchar_cxx98" >&5 +$as_echo "$glibcxx_cv_c99_wchar_cxx98" >&6; } + if test x"$glibcxx_cv_c99_wchar_cxx98" = x"yes"; then + +$as_echo "#define _GLIBCXX98_USE_C99_WCHAR 1" >>confdefs.h + + fi + fi + + # Option parsed, now set things appropriately. + if test x"$glibcxx_cv_c99_math_cxx98" = x"no" || + test x"$glibcxx_cv_c99_complex_cxx98" = x"no" || + test x"$glibcxx_cv_c99_stdio_cxx98" = x"no" || + test x"$glibcxx_cv_c99_stdlib_cxx98" = x"no" || + test x"$glibcxx_cv_c99_wchar_cxx98" = x"no"; then + enable_c99=no; + else + +$as_echo "#define _GLIBCXX_USE_C99 1" >>confdefs.h + + fi + + gcc_no_link="$ac_save_gcc_no_link" + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + # Use -std=c++11 and test again for C99 library feature in C++11 mode. + # For the reasons given above we use -std=c++11 not -std=gnu++11. + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++11" + ac_save_LIBS="$LIBS" + ac_save_gcc_no_link="$gcc_no_link" + + if test x$gcc_no_link != xyes; then + # Use -fno-exceptions to that the C driver can link these tests without + # hitting undefined references to personality routines. + CXXFLAGS="$CXXFLAGS -fno-exceptions" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 +$as_echo_n "checking for sin in -lm... " >&6; } +if test "${ac_cv_lib_m_sin+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sin (); +int +main () +{ +return sin (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_m_sin=yes +else + ac_cv_lib_m_sin=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5 +$as_echo "$ac_cv_lib_m_sin" >&6; } +if test "x$ac_cv_lib_m_sin" = x""yes; then : + LIBS="$LIBS -lm" +else + + # Use the default compile-only tests in GCC_TRY_COMPILE_OR_LINK + gcc_no_link=yes + +fi + + fi + + # Check for the existence of <math.h> functions used if C99 is enabled. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <math.h> for C++11" >&5 +$as_echo_n "checking for ISO C99 support in <math.h> for C++11... " >&6; } + if test "${glibcxx_cv_c99_math_cxx11+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <math.h> - volatile double d1, d2; - volatile int i; + volatile double d1, d2; + volatile int i; int main () { i = fpclassify(d1); - i = isfinite(d1); - i = isinf(d1); - i = isnan(d1); - i = isnormal(d1); - i = signbit(d1); - i = isgreater(d1, d2); - i = isgreaterequal(d1, d2); - i = isless(d1, d2); - i = islessequal(d1, d2); - i = islessgreater(d1, d2); - i = islessgreater(d1, d2); - i = isunordered(d1, d2); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : - glibcxx_cv_c99_math=yes + glibcxx_cv_c99_math_cxx11=yes else - glibcxx_cv_c99_math=no + glibcxx_cv_c99_math_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else @@ -16663,33 +17250,33 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <math.h> - volatile double d1, d2; - volatile int i; + volatile double d1, d2; + volatile int i; int main () { i = fpclassify(d1); - i = isfinite(d1); - i = isinf(d1); - i = isnan(d1); - i = isnormal(d1); - i = signbit(d1); - i = isgreater(d1, d2); - i = isgreaterequal(d1, d2); - i = isless(d1, d2); - i = islessequal(d1, d2); - i = islessgreater(d1, d2); - i = islessgreater(d1, d2); - i = isunordered(d1, d2); + i = isfinite(d1); + i = isinf(d1); + i = isnan(d1); + i = isnormal(d1); + i = signbit(d1); + i = isgreater(d1, d2); + i = isgreaterequal(d1, d2); + i = isless(d1, d2); + i = islessequal(d1, d2); + i = islessgreater(d1, d2); + i = islessgreater(d1, d2); + i = isunordered(d1, d2); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : - glibcxx_cv_c99_math=yes + glibcxx_cv_c99_math_cxx11=yes else - glibcxx_cv_c99_math=no + glibcxx_cv_c99_math_cxx11=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -16697,19 +17284,19 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_math" >&5 -$as_echo "$glibcxx_cv_c99_math" >&6; } - if test x"$glibcxx_cv_c99_math" = x"yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_math_cxx11" >&5 +$as_echo "$glibcxx_cv_c99_math_cxx11" >&6; } + if test x"$glibcxx_cv_c99_math_cxx11" = x"yes"; then -$as_echo "#define _GLIBCXX_USE_C99_MATH 1" >>confdefs.h +$as_echo "#define _GLIBCXX11_USE_C99_MATH 1" >>confdefs.h - fi + fi - # Check for the existence of <complex.h> complex math functions. - # This is necessary even though libstdc++ uses the builtin versions - # of these functions, because if the builtin cannot be used, a reference - # to the library function is emitted. - for ac_header in tgmath.h + # Check for the existence of <complex.h> complex math functions. + # This is necessary even though libstdc++ uses the builtin versions + # of these functions, because if the builtin cannot be used, a reference + # to the library function is emitted. + for ac_header in tgmath.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "tgmath.h" "ac_cv_header_tgmath_h" "$ac_includes_default" if test "x$ac_cv_header_tgmath_h" = x""yes; then : @@ -16723,7 +17310,7 @@ fi done - for ac_header in complex.h + for ac_header in complex.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "complex.h" "ac_cv_header_complex_h" "$ac_includes_default" if test "x$ac_cv_header_complex_h" = x""yes; then : @@ -16737,74 +17324,77 @@ fi done - glibcxx_cv_c99_complex=no; - if test x"$ac_has_complex_h" = x"yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <complex.h>" >&5 -$as_echo_n "checking for ISO C99 support in <complex.h>... " >&6; } - if test x$gcc_no_link = xyes; then + if test x"$ac_has_complex_h" = x"yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <complex.h> for C++11" >&5 +$as_echo_n "checking for ISO C99 support in <complex.h> for C++11... " >&6; } + if test "${glibcxx_cv_c99_complex_cxx11+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <complex.h> - typedef __complex__ float float_type; - typedef __complex__ double double_type; - typedef __complex__ long double ld_type; - volatile float_type tmpf; - volatile double_type tmpd; - volatile ld_type tmpld; - volatile float f; - volatile double d; - volatile long double ld; + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld; int main () { f = cabsf(tmpf); - f = cargf(tmpf); - tmpf = ccosf(tmpf); - tmpf = ccoshf(tmpf); - tmpf = cexpf(tmpf); - tmpf = clogf(tmpf); - tmpf = csinf(tmpf); - tmpf = csinhf(tmpf); - tmpf = csqrtf(tmpf); - tmpf = ctanf(tmpf); - tmpf = ctanhf(tmpf); - tmpf = cpowf(tmpf, tmpf); - tmpf = cprojf(tmpf); - d = cabs(tmpd); - d = carg(tmpd); - tmpd = ccos(tmpd); - tmpd = ccosh(tmpd); - tmpd = cexp(tmpd); - tmpd = clog(tmpd); - tmpd = csin(tmpd); - tmpd = csinh(tmpd); - tmpd = csqrt(tmpd); - tmpd = ctan(tmpd); - tmpd = ctanh(tmpd); - tmpd = cpow(tmpd, tmpd); - tmpd = cproj(tmpd); - ld = cabsl(tmpld); - ld = cargl(tmpld); - tmpld = ccosl(tmpld); - tmpld = ccoshl(tmpld); - tmpld = cexpl(tmpld); - tmpld = clogl(tmpld); - tmpld = csinl(tmpld); - tmpld = csinhl(tmpld); - tmpld = csqrtl(tmpld); - tmpld = ctanl(tmpld); - tmpld = ctanhl(tmpld); - tmpld = cpowl(tmpld, tmpld); - tmpld = cprojl(tmpld); - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - glibcxx_cv_c99_complex=yes -else - glibcxx_cv_c99_complex=no + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_c99_complex_cxx11=yes +else + glibcxx_cv_c99_complex_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else @@ -16814,100 +17404,103 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <complex.h> - typedef __complex__ float float_type; - typedef __complex__ double double_type; - typedef __complex__ long double ld_type; - volatile float_type tmpf; - volatile double_type tmpd; - volatile ld_type tmpld; - volatile float f; - volatile double d; - volatile long double ld; + typedef __complex__ float float_type; + typedef __complex__ double double_type; + typedef __complex__ long double ld_type; + volatile float_type tmpf; + volatile double_type tmpd; + volatile ld_type tmpld; + volatile float f; + volatile double d; + volatile long double ld; int main () { f = cabsf(tmpf); - f = cargf(tmpf); - tmpf = ccosf(tmpf); - tmpf = ccoshf(tmpf); - tmpf = cexpf(tmpf); - tmpf = clogf(tmpf); - tmpf = csinf(tmpf); - tmpf = csinhf(tmpf); - tmpf = csqrtf(tmpf); - tmpf = ctanf(tmpf); - tmpf = ctanhf(tmpf); - tmpf = cpowf(tmpf, tmpf); - tmpf = cprojf(tmpf); - d = cabs(tmpd); - d = carg(tmpd); - tmpd = ccos(tmpd); - tmpd = ccosh(tmpd); - tmpd = cexp(tmpd); - tmpd = clog(tmpd); - tmpd = csin(tmpd); - tmpd = csinh(tmpd); - tmpd = csqrt(tmpd); - tmpd = ctan(tmpd); - tmpd = ctanh(tmpd); - tmpd = cpow(tmpd, tmpd); - tmpd = cproj(tmpd); - ld = cabsl(tmpld); - ld = cargl(tmpld); - tmpld = ccosl(tmpld); - tmpld = ccoshl(tmpld); - tmpld = cexpl(tmpld); - tmpld = clogl(tmpld); - tmpld = csinl(tmpld); - tmpld = csinhl(tmpld); - tmpld = csqrtl(tmpld); - tmpld = ctanl(tmpld); - tmpld = ctanhl(tmpld); - tmpld = cpowl(tmpld, tmpld); - tmpld = cprojl(tmpld); + f = cargf(tmpf); + tmpf = ccosf(tmpf); + tmpf = ccoshf(tmpf); + tmpf = cexpf(tmpf); + tmpf = clogf(tmpf); + tmpf = csinf(tmpf); + tmpf = csinhf(tmpf); + tmpf = csqrtf(tmpf); + tmpf = ctanf(tmpf); + tmpf = ctanhf(tmpf); + tmpf = cpowf(tmpf, tmpf); + tmpf = cprojf(tmpf); + d = cabs(tmpd); + d = carg(tmpd); + tmpd = ccos(tmpd); + tmpd = ccosh(tmpd); + tmpd = cexp(tmpd); + tmpd = clog(tmpd); + tmpd = csin(tmpd); + tmpd = csinh(tmpd); + tmpd = csqrt(tmpd); + tmpd = ctan(tmpd); + tmpd = ctanh(tmpd); + tmpd = cpow(tmpd, tmpd); + tmpd = cproj(tmpd); + ld = cabsl(tmpld); + ld = cargl(tmpld); + tmpld = ccosl(tmpld); + tmpld = ccoshl(tmpld); + tmpld = cexpl(tmpld); + tmpld = clogl(tmpld); + tmpld = csinl(tmpld); + tmpld = csinhl(tmpld); + tmpld = csqrtl(tmpld); + tmpld = ctanl(tmpld); + tmpld = ctanhl(tmpld); + tmpld = cpowl(tmpld, tmpld); + tmpld = cprojl(tmpld); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : - glibcxx_cv_c99_complex=yes + glibcxx_cv_c99_complex_cxx11=yes else - glibcxx_cv_c99_complex=no + glibcxx_cv_c99_complex_cxx11=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_complex" >&5 -$as_echo "$glibcxx_cv_c99_complex" >&6; } - if test x"$glibcxx_cv_c99_complex" = x"yes"; then -$as_echo "#define _GLIBCXX_USE_C99_COMPLEX 1" >>confdefs.h +fi - fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_complex_cxx11" >&5 +$as_echo "$glibcxx_cv_c99_complex_cxx11" >&6; } + if test x"$glibcxx_cv_c99_complex_cxx11" = x"yes"; then + +$as_echo "#define _GLIBCXX11_USE_C99_COMPLEX 1" >>confdefs.h - # Check for the existence in <stdio.h> of vscanf, et. al. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdio.h>" >&5 -$as_echo_n "checking for ISO C99 support in <stdio.h>... " >&6; } - if test "${glibcxx_cv_c99_stdio+set}" = set; then : + fi + + # Check for the existence in <stdio.h> of vscanf, et. al. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdio.h> for C++11" >&5 +$as_echo_n "checking for ISO C99 support in <stdio.h> for C++11... " >&6; } + if test "${glibcxx_cv_c99_stdio_cxx11+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> - #include <stdarg.h> - void foo(char* fmt, ...) - { - va_list args; va_start(args, fmt); - vfscanf(stderr, "%i", args); - vscanf("%i", args); - vsnprintf(fmt, 0, "%i", args); - vsscanf(fmt, "%i", args); - snprintf(fmt, 0, "%i"); - } + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + } int main () { @@ -16917,9 +17510,9 @@ main () } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : - glibcxx_cv_c99_stdio=yes + glibcxx_cv_c99_stdio_cxx11=yes else - glibcxx_cv_c99_stdio=no + glibcxx_cv_c99_stdio_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else @@ -16929,16 +17522,16 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> - #include <stdarg.h> - void foo(char* fmt, ...) - { - va_list args; va_start(args, fmt); - vfscanf(stderr, "%i", args); - vscanf("%i", args); - vsnprintf(fmt, 0, "%i", args); - vsscanf(fmt, "%i", args); - snprintf(fmt, 0, "%i"); - } + #include <stdarg.h> + void foo(char* fmt, ...) + { + va_list args; va_start(args, fmt); + vfscanf(stderr, "%i", args); + vscanf("%i", args); + vsnprintf(fmt, 0, "%i", args); + vsscanf(fmt, "%i", args); + snprintf(fmt, 0, "%i"); + } int main () { @@ -16948,9 +17541,9 @@ main () } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : - glibcxx_cv_c99_stdio=yes + glibcxx_cv_c99_stdio_cxx11=yes else - glibcxx_cv_c99_stdio=no + glibcxx_cv_c99_stdio_cxx11=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -16958,47 +17551,52 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdio" >&5 -$as_echo "$glibcxx_cv_c99_stdio" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdio_cxx11" >&5 +$as_echo "$glibcxx_cv_c99_stdio_cxx11" >&6; } + if test x"$glibcxx_cv_c99_stdio_cxx11" = x"yes"; then + +$as_echo "#define _GLIBCXX11_USE_C99_STDIO 1" >>confdefs.h - # Check for the existence in <stdlib.h> of lldiv_t, et. al. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdlib.h>" >&5 -$as_echo_n "checking for ISO C99 support in <stdlib.h>... " >&6; } - if test "${glibcxx_cv_c99_stdlib+set}" = set; then : + fi + + # Check for the existence in <stdlib.h> of lldiv_t, et. al. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <stdlib.h> for C++11" >&5 +$as_echo_n "checking for ISO C99 support in <stdlib.h> for C++11... " >&6; } + if test "${glibcxx_cv_c99_stdlib_cxx11+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then + if test x$gcc_no_link = xyes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> - volatile float f; - volatile long double ld; - volatile unsigned long long ll; - lldiv_t mydivt; + volatile float f; + volatile long double ld; + volatile unsigned long long ll; + lldiv_t mydivt; int main () { char* tmp; - f = strtof("gnu", &tmp); - ld = strtold("gnu", &tmp); - ll = strtoll("gnu", &tmp, 10); - ll = strtoull("gnu", &tmp, 10); - ll = llabs(10); - mydivt = lldiv(10,1); - ll = mydivt.quot; - ll = mydivt.rem; - ll = atoll("10"); - _Exit(0); + f = strtof("gnu", &tmp); + ld = strtold("gnu", &tmp); + ll = strtoll("gnu", &tmp, 10); + ll = strtoull("gnu", &tmp, 10); + ll = llabs(10); + mydivt = lldiv(10,1); + ll = mydivt.quot; + ll = mydivt.rem; + ll = atoll("10"); + _Exit(0); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : - glibcxx_cv_c99_stdlib=yes + glibcxx_cv_c99_stdlib_cxx11=yes else - glibcxx_cv_c99_stdlib=no + glibcxx_cv_c99_stdlib_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else @@ -17008,33 +17606,33 @@ fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> - volatile float f; - volatile long double ld; - volatile unsigned long long ll; - lldiv_t mydivt; + volatile float f; + volatile long double ld; + volatile unsigned long long ll; + lldiv_t mydivt; int main () { char* tmp; - f = strtof("gnu", &tmp); - ld = strtold("gnu", &tmp); - ll = strtoll("gnu", &tmp, 10); - ll = strtoull("gnu", &tmp, 10); - ll = llabs(10); - mydivt = lldiv(10,1); - ll = mydivt.quot; - ll = mydivt.rem; - ll = atoll("10"); - _Exit(0); + f = strtof("gnu", &tmp); + ld = strtold("gnu", &tmp); + ll = strtoll("gnu", &tmp, 10); + ll = strtoull("gnu", &tmp, 10); + ll = llabs(10); + mydivt = lldiv(10,1); + ll = mydivt.quot; + ll = mydivt.rem; + ll = atoll("10"); + _Exit(0); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : - glibcxx_cv_c99_stdlib=yes + glibcxx_cv_c99_stdlib_cxx11=yes else - glibcxx_cv_c99_stdlib=no + glibcxx_cv_c99_stdlib_cxx11=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -17042,24 +17640,32 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdlib" >&5 -$as_echo "$glibcxx_cv_c99_stdlib" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_stdlib_cxx11" >&5 +$as_echo "$glibcxx_cv_c99_stdlib_cxx11" >&6; } + if test x"$glibcxx_cv_c99_stdlib_cxx11" = x"yes"; then - # Check for the existence in <wchar.h> of wcstold, etc. - glibcxx_cv_c99_wchar=no; - if test x"$ac_has_wchar_h" = xyes && - test x"$ac_has_wctype_h" = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <wchar.h>" >&5 -$as_echo_n "checking for ISO C99 support in <wchar.h>... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +$as_echo "#define _GLIBCXX11_USE_C99_STDLIB 1" >>confdefs.h + + fi + + # Check for the existence in <wchar.h> of wcstold, etc. + if test x"$ac_has_wchar_h" = xyes && + test x"$ac_has_wctype_h" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 support in <wchar.h> for C++11" >&5 +$as_echo_n "checking for ISO C99 support in <wchar.h> for C++11... " >&6; } + if test "${glibcxx_cv_c99_wchar_cxx11+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> - namespace test - { - using ::wcstold; - using ::wcstoll; - using ::wcstoull; - } + namespace test + { + using ::wcstold; + using ::wcstoll; + using ::wcstoull; + } int main () @@ -17070,20 +17676,23 @@ main () } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : - glibcxx_cv_c99_wchar=yes + glibcxx_cv_c99_wchar_cxx11=yes else - glibcxx_cv_c99_wchar=no + glibcxx_cv_c99_wchar_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - # Checks for wide character functions that may not be present. - # Injection of these is wrapped with guard macros. - # NB: only put functions here, instead of immediately above, if - # absolutely necessary. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +fi + + + # Checks for wide character functions that may not be present. + # Injection of these is wrapped with guard macros. + # NB: only put functions here, instead of immediately above, if + # absolutely necessary. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> - namespace test { using ::vfwscanf; } + namespace test { using ::vfwscanf; } int main () { @@ -17099,10 +17708,10 @@ $as_echo "#define HAVE_VFWSCANF 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> - namespace test { using ::vswscanf; } + namespace test { using ::vswscanf; } int main () { @@ -17118,10 +17727,10 @@ $as_echo "#define HAVE_VSWSCANF 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> - namespace test { using ::vwscanf; } + namespace test { using ::vwscanf; } int main () { @@ -17137,10 +17746,10 @@ $as_echo "#define HAVE_VWSCANF 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wchar.h> - namespace test { using ::wcstof; } + namespace test { using ::wcstof; } int main () { @@ -17156,13 +17765,13 @@ $as_echo "#define HAVE_WCSTOF 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <wctype.h> int main () { - wint_t t; int i = iswblank(t); +wint_t t; int i = iswblank(t); ; return 0; } @@ -17174,27 +17783,19 @@ $as_echo "#define HAVE_ISWBLANK 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_wchar" >&5 -$as_echo "$glibcxx_cv_c99_wchar" >&6; } - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_c99_wchar_cxx11" >&5 +$as_echo "$glibcxx_cv_c99_wchar_cxx11" >&6; } + if test x"$glibcxx_cv_c99_wchar_cxx11" = x"yes"; then - # Option parsed, now set things appropriately. - if test x"$glibcxx_cv_c99_math" = x"no" || - test x"$glibcxx_cv_c99_complex" = x"no" || - test x"$glibcxx_cv_c99_stdio" = x"no" || - test x"$glibcxx_cv_c99_stdlib" = x"no" || - test x"$glibcxx_cv_c99_wchar" = x"no"; then - enable_c99=no; - else +$as_echo "#define _GLIBCXX11_USE_C99_WCHAR 1" >>confdefs.h -$as_echo "#define _GLIBCXX_USE_C99 1" >>confdefs.h - - fi + fi + fi - gcc_no_link="$ac_save_gcc_no_link" - LIBS="$ac_save_LIBS" - CXXFLAGS="$ac_save_CXXFLAGS" - ac_ext=c + gcc_no_link="$ac_save_gcc_no_link" + LIBS="$ac_save_LIBS" + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 35246d9..b3853cd 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -5387,7 +5387,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) +#if __cplusplus >= 201103L #include <ext/string_conversions.h> @@ -5396,6 +5396,7 @@ namespace std _GLIBCXX_VISIBILITY(default) _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CXX11 +#if _GLIBCXX_USE_C99_STDLIB // 21.4 Numeric Conversions [string.conversions]. inline int stoi(const string& __str, size_t* __idx = 0, int __base = 10) @@ -5434,7 +5435,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 inline long double stold(const string& __str, size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +#endif // _GLIBCXX_USE_C99_STDLIB +#if _GLIBCXX_USE_C99_STDIO // NB: (v)snprintf vs sprintf. // DR 1261. @@ -5498,8 +5501,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n, "%Lf", __val); } +#endif // _GLIBCXX_USE_C99_STDIO -#ifdef _GLIBCXX_USE_WCHAR_T +#if defined(_GLIBCXX_USE_WCHAR_T) && defined(_GLIBCXX_USE_C99_WCHAR) inline int stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(), @@ -5601,13 +5605,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 L"%Lf", __val); } #endif // _GLIBCXX_HAVE_BROKEN_VSWPRINTF -#endif +#endif // _GLIBCXX_USE_WCHAR_T && _GLIBCXX_USE_C99_WCHAR _GLIBCXX_END_NAMESPACE_CXX11 _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#endif /* C++11 && _GLIBCXX_USE_C99 ... */ +#endif /* C++11 */ #if __cplusplus >= 201103L diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index 924f13e..723feb1 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -529,4 +529,40 @@ namespace std #undef min #undef max +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + // End of prewritten config; the settings discovered at configure time follow. diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index bd58771..2db2d83 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -959,13 +959,13 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL } // The following code uses vsnprintf (or vsprintf(), when - // _GLIBCXX_USE_C99 is not defined) to convert floating point values - // for insertion into a stream. An optimization would be to replace - // them with code that works directly on a wide buffer and then use - // __pad to do the padding. It would be good to replace them anyway - // to gain back the efficiency that C++ provides by knowing up front - // the type of the values to insert. Also, sprintf is dangerous - // since may lead to accidental buffer overruns. This + // _GLIBCXX_USE_C99_STDIO is not defined) to convert floating point + // values for insertion into a stream. An optimization would be to + // replace them with code that works directly on a wide buffer and + // then use __pad to do the padding. It would be good to replace + // them anyway to gain back the efficiency that C++ provides by + // knowing up front the type of the values to insert. Also, sprintf + // is dangerous since may lead to accidental buffer overruns. This // implementation follows the C++ standard fairly directly as // outlined in 22.2.2.2 [lib.locale.num.put] template<typename _CharT, typename _OutIter> @@ -992,7 +992,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL char __fbuf[16]; __num_base::_S_format_float(__io, __fbuf, __mod); -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO // Precision is always used except for hexfloat format. const bool __use_prec = (__io.flags() & ios_base::floatfield) != ios_base::floatfield; diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.tcc b/libstdc++-v3/include/bits/locale_facets_nonio.tcc index 2e73b5d..631ef53 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -578,7 +578,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO // First try a buffer perhaps big enough. int __cs_size = 64; char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); @@ -751,7 +751,7 @@ _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 case 'S': // Seconds. [tm_sec] // [00, 60] in C99 (one leap-second), [00, 61] in C89. -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99 __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2, #else __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 61, 2, diff --git a/libstdc++-v3/include/c_compatibility/math.h b/libstdc++-v3/include/c_compatibility/math.h index d6acb6d..7729896 100644 --- a/libstdc++-v3/include/c_compatibility/math.h +++ b/libstdc++-v3/include/c_compatibility/math.h @@ -56,7 +56,7 @@ using std::fabs; using std::floor; using std::fmod; -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_MATH using std::fpclassify; using std::isfinite; using std::isinf; diff --git a/libstdc++-v3/include/c_compatibility/wchar.h b/libstdc++-v3/include/c_compatibility/wchar.h index 06b5d47..3bc12d0 100644 --- a/libstdc++-v3/include/c_compatibility/wchar.h +++ b/libstdc++-v3/include/c_compatibility/wchar.h @@ -103,7 +103,7 @@ using std::wmemmove; using std::wmemset; using std::wcsftime; -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/c_global/cstdio b/libstdc++-v3/include/c_global/cstdio index d1c958b..486cee9 100644 --- a/libstdc++-v3/include/c_global/cstdio +++ b/libstdc++-v3/include/c_global/cstdio @@ -146,7 +146,7 @@ namespace std using ::vsprintf; } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO #undef snprintf #undef vfscanf @@ -189,6 +189,6 @@ namespace std using ::__gnu_cxx::vsscanf; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDIO #endif diff --git a/libstdc++-v3/include/c_global/cstdlib b/libstdc++-v3/include/c_global/cstdlib index 7e9bb30..a2f44fc 100644 --- a/libstdc++-v3/include/c_global/cstdlib +++ b/libstdc++-v3/include/c_global/cstdlib @@ -195,7 +195,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB #undef _Exit #undef llabs @@ -266,7 +266,7 @@ namespace std using ::__gnu_cxx::strtold; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // !_GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/c_global/cwchar b/libstdc++-v3/include/c_global/cwchar index dddb409..1571463 100644 --- a/libstdc++-v3/include/c_global/cwchar +++ b/libstdc++-v3/include/c_global/cwchar @@ -232,7 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR #undef wcstold #undef wcstoll @@ -289,7 +289,7 @@ namespace std using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio index 37f01ca..b7860f9 100644 --- a/libstdc++-v3/include/c_std/cstdio +++ b/libstdc++-v3/include/c_std/cstdio @@ -144,7 +144,7 @@ namespace std using ::vsprintf; } // namespace std -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO #undef snprintf #undef vfscanf diff --git a/libstdc++-v3/include/c_std/cstdlib b/libstdc++-v3/include/c_std/cstdlib index 0bd7058..7b69884 100644 --- a/libstdc++-v3/include/c_std/cstdlib +++ b/libstdc++-v3/include/c_std/cstdlib @@ -192,7 +192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB #undef _Exit #undef llabs @@ -263,7 +263,7 @@ namespace std using ::__gnu_cxx::strtold; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // !_GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/c_std/cwchar b/libstdc++-v3/include/c_std/cwchar index aa1b2fa..5aade7f 100644 --- a/libstdc++-v3/include/c_std/cwchar +++ b/libstdc++-v3/include/c_std/cwchar @@ -228,7 +228,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR #undef wcstold #undef wcstoll diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index 68acd57..8732bd3 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -2680,7 +2680,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) +#if __cplusplus >= 201103L #include <ext/string_conversions.h> @@ -2688,6 +2688,7 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if _GLIBCXX_USE_C99_STDLIB // 21.4 Numeric Conversions [string.conversions]. inline int stoi(const __vstring& __str, std::size_t* __idx = 0, int __base = 10) @@ -2726,7 +2727,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double stold(const __vstring& __str, std::size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +#endif // _GLIBCXX_USE_C99_STDLIB +#if _GLIBCXX_USE_C99_STDIO // NB: (v)snprintf vs sprintf. // DR 1261. @@ -2789,8 +2792,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n, "%Lf", __val); } +#endif // _GLIBCXX_USE_C99_STDIO -#ifdef _GLIBCXX_USE_WCHAR_T +#if defined(_GLIBCXX_USE_WCHAR_T) && defined(_GLIBCXX_USE_C99_WCHAR) inline int stoi(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(), @@ -2890,8 +2894,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n, L"%Lf", __val); } -#endif -#endif +#endif // _GLIBCXX_HAVE_BROKEN_VSWPRINTF +#endif // _GLIBCXX_USE_WCHAR_T && _GLIBCXX_USE_C99_WCHAR _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 5ed4fd5..f1d3b79 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -995,7 +995,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION complex<_Tp> pow(const complex<_Tp>& __x, const _Tp& __y) { -#ifndef _GLIBCXX_USE_C99_COMPLEX +#if ! _GLIBCXX_USE_C99_COMPLEX if (__x == _Tp()) return _Tp(); #endif @@ -1831,7 +1831,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION arg(_Tp __x) { typedef typename __gnu_cxx::__promote<_Tp>::__type __type; -#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) +#if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) : __type(); #else diff --git a/libstdc++-v3/include/tr1/cstdio b/libstdc++-v3/include/tr1/cstdio index 7681823..b8fc04f 100644 --- a/libstdc++-v3/include/tr1/cstdio +++ b/libstdc++-v3/include/tr1/cstdio @@ -33,7 +33,7 @@ #include <cstdio> -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/tr1/cstdlib b/libstdc++-v3/include/tr1/cstdlib index c3c65eb..35a9133 100644 --- a/libstdc++-v3/include/tr1/cstdlib +++ b/libstdc++-v3/include/tr1/cstdlib @@ -35,7 +35,7 @@ #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB namespace std _GLIBCXX_VISIBILITY(default) { @@ -65,7 +65,7 @@ namespace tr1 } } -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // _GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/tr1/cwchar b/libstdc++-v3/include/tr1/cwchar index 10772ee..0db2262 100644 --- a/libstdc++-v3/include/tr1/cwchar +++ b/libstdc++-v3/include/tr1/cwchar @@ -52,7 +52,7 @@ namespace tr1 using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/tr1/stdlib.h b/libstdc++-v3/include/tr1/stdlib.h index 310c7bc..5e826d6 100644 --- a/libstdc++-v3/include/tr1/stdlib.h +++ b/libstdc++-v3/include/tr1/stdlib.h @@ -33,7 +33,7 @@ #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB using std::tr1::atoll; using std::tr1::strtoll; diff --git a/libstdc++-v3/src/c++98/locale_facets.cc b/libstdc++-v3/src/c++98/locale_facets.cc index 071f79e..28b6f3a 100644 --- a/libstdc++-v3/src/c++98/locale_facets.cc +++ b/libstdc++-v3/src/c++98/locale_facets.cc @@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ios_base::fmtflags __fltfield = __flags & ios_base::floatfield; -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO // Precision is always used except for hexfloat format. if (__fltfield != (ios_base::fixed | ios_base::scientific)) #endif @@ -89,7 +89,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION *__fptr++ = 'f'; else if (__fltfield == ios_base::scientific) *__fptr++ = (__flags & ios_base::uppercase) ? 'E' : 'e'; -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO else if (__fltfield == (ios_base::fixed | ios_base::scientific)) *__fptr++ = (__flags & ios_base::uppercase) ? 'A' : 'a'; #endif diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc index 5f0a4bf..1a53c06 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc @@ -23,7 +23,7 @@ #include <exception> #include <stdlib.h> -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB void terminate() { _Exit(0); } void f() noexcept @@ -39,7 +39,7 @@ void f() noexcept int main() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB f(); #endif return 0; diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc index ed3930a..3f8e08d 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc @@ -23,7 +23,7 @@ #include <exception> #include <stdlib.h> -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB void unexpected() { _Exit(0); } void f() throw() @@ -39,7 +39,7 @@ void f() throw() int main() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB f(); #endif } diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc index c270d76..ea284cc 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc index 2bb7aea..fd54d57 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc index 24aceb6..8cd0ea1 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc index bc50156..9be3f39 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc index 1461adb..7d9e414 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc index cc91c24..2927da3 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc index 6c26c2bb..256cee5 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc index 91b6479..e102c6a 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc index e36c30e..467bd9f 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc @@ -27,7 +27,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = true; using namespace std; diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc index 33f8000..50c6b32 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc +++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc @@ -19,7 +19,7 @@ #include <cstdlib> #include <testsuite_hooks.h> -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB // libstdc++/13943 void test01() { @@ -36,7 +36,7 @@ void test01() int main() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB test01(); #endif return 0; diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc index 0511043..bfcbe9a 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc +++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc @@ -24,10 +24,10 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB typedef std::lldiv_t my_lldiv_t; - + #endif } diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 9a6726c..6a62dfd 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1614,7 +1614,7 @@ proc check_v3_target_string_conversions { } { set f [open $src "w"] puts $f "#include <bits/c++config.h>" - puts $f "#if !defined(_GLIBCXX_USE_C99) || defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)" + puts $f "#if !(_GLIBCXX_USE_C99_STDIO && _GLIBCXX_USE_C99_STDLIB && _GLIBCXX_USE_C99_WCHAR) || defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)" puts $f "# error No string conversions" puts $f "#endif" close $f diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc index b75fda2..ac8933c 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc @@ -23,7 +23,7 @@ #include <tr1/cmath> -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_MATH #if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC template<typename T> diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc index 0c913e0..5a9eb6c 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc @@ -30,7 +30,7 @@ void test01(int dummy, ...) std::va_list ap; va_start(ap, dummy); -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO char* s = 0; const char* cs = 0; diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc index cfa748d..dfa08ef 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc @@ -27,7 +27,7 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB long long i = 0; const char* s = 0; diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc index 002b6a5..1252463 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc @@ -27,10 +27,10 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB typedef std::tr1::lldiv_t my_lldiv_t; - + #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 b964661..c745b19 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc @@ -67,7 +67,7 @@ void test01(int dummy, ...) ret3 = ret3; // Suppress unused warning. #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR const wchar_t* nptr2 = 0; wchar_t** endptr2 = 0; diff --git a/libstdc++-v3/testsuite/util/testsuite_fs.h b/libstdc++-v3/testsuite/util/testsuite_fs.h index 44aef11..ddcbdcc 100644 --- a/libstdc++-v3/testsuite/util/testsuite_fs.h +++ b/libstdc++-v3/testsuite/util/testsuite_fs.h @@ -83,7 +83,7 @@ namespace __gnu_test p = tmp; #else char buf[64]; -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO std::snprintf(buf, 64, "filesystem-ts-test.%lu", (unsigned long)::getpid()); #else std::sprintf(buf, "filesystem-ts-test.%lu", (unsigned long)::getpid()); |