summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-04 11:13:34 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-04 11:13:34 +0000
commitf8c2da4bf80217b11405d23ac893f5cfabc89708 (patch)
tree543c967eadc67a81024d62c14fb129147c039cb0
parent19665740d336d4ee7d0cf92b5b0643fa1d7da14a (diff)
downloadgcc-f8c2da4bf80217b11405d23ac893f5cfabc89708.tar.gz
Add C++11 header <cuchar>.
2015-09-04 Edward Smith-Rowland <3dw4rd@verizon.net> Jonathan Wakely <jwakely@redhat.com> * acinclude.m4 (GLIBCXX_CHECK_UCHAR_H): Define. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Check for <uchar.h>. * include/Makefile.am: Add new headers. * include/Makefile.in: Regenerate. * include/c/cuchar: New. * include/c_compatibility/uchar.h: New. * include/c_global/cuchar: New. * include/c_std/cuchar: New. * include/precompiled/stdc++.h: Include <cuchar>. * testsuite/17_intro/headers/c++200x/stdc++.cc: Include <uchar.h>. * testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc: Include <uchar.h>. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227488 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog19
-rw-r--r--libstdc++-v3/acinclude.m446
-rw-r--r--libstdc++-v3/config.h.in7
-rwxr-xr-xlibstdc++-v3/configure81
-rw-r--r--libstdc++-v3/configure.ac1
-rw-r--r--libstdc++-v3/include/Makefile.am2
-rw-r--r--libstdc++-v3/include/Makefile.in2
-rw-r--r--libstdc++-v3/include/c/cuchar47
-rw-r--r--libstdc++-v3/include/c_compatibility/uchar.h45
-rw-r--r--libstdc++-v3/include/c_global/cuchar77
-rw-r--r--libstdc++-v3/include/c_std/cuchar77
-rw-r--r--libstdc++-v3/include/precompiled/stdc++.h1
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc3
-rw-r--r--libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc6
14 files changed, 414 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 68464ead640..03fd3be590d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,22 @@
+2015-09-04 Edward Smith-Rowland <3dw4rd@verizon.net>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ Add C++11 header <cuchar>.
+ * acinclude.m4 (GLIBCXX_CHECK_UCHAR_H): Define.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * configure.ac: Check for <uchar.h>.
+ * include/Makefile.am: Add new headers.
+ * include/Makefile.in: Regenerate.
+ * include/c/cuchar: New.
+ * include/c_compatibility/uchar.h: New.
+ * include/c_global/cuchar: New.
+ * include/c_std/cuchar: New.
+ * include/precompiled/stdc++.h: Include <cuchar>.
+ * testsuite/17_intro/headers/c++200x/stdc++.cc: Include <uchar.h>.
+ * testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc:
+ Include <uchar.h>.
+
2015-09-04 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/65473
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 789bc5894a0..64c9b7e32cf 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1809,6 +1809,52 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
])
dnl
+dnl Check for uchar.h and usability.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [
+
+ # Test uchar.h.
+ AC_CHECK_HEADERS(uchar.h, ac_has_uchar_h=yes, ac_has_uchar_h=no)
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=c++11"
+
+ if test x"$ac_has_uchar_h" = x"yes"; then
+ AC_MSG_CHECKING([for ISO C11 support for <uchar.h>])
+ AC_TRY_COMPILE([#include <uchar.h>
+ #ifdef __STDC_UTF_16__
+ long i = __STDC_UTF_16__;
+ #endif
+ #ifdef __STDC_UTF_32__
+ long j = __STDC_UTF_32__;
+ #endif
+ namespace test
+ {
+ using ::c16rtomb;
+ using ::c32rtomb;
+ using ::mbrtoc16;
+ using ::mbrtoc32;
+ }
+ ],
+ [], [ac_c11_uchar_cxx11=yes], [ac_c11_uchar_cxx11=no])
+ else
+ ac_c11_uchar_cxx11=no
+ fi
+ AC_MSG_RESULT($ac_c11_uchar_cxx11)
+ if test x"$ac_c11_uchar_cxx11" = x"yes"; then
+ AC_DEFINE(_GLIBCXX_USE_C11_UCHAR_CXX11, 1,
+ [Define if C11 functions in <uchar.h> should be imported into
+ namespace std in <cuchar>.])
+ fi
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
+])
+
+
+dnl
dnl Check whether "/dev/random" and "/dev/urandom" are available for the
dnl random_device of "TR1" (Chapter 5.1, "Random number generation").
dnl
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index 337f61440a9..cc7a21e820c 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -454,6 +454,9 @@
/* Define to 1 if the target supports thread-local storage. */
#undef HAVE_TLS
+/* Define to 1 if you have the <uchar.h> header file. */
+#undef HAVE_UCHAR_H
+
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
@@ -780,6 +783,10 @@
/* Define to use Sun versioning in the shared library. */
#undef _GLIBCXX_SYMVER_SUN
+/* Define if C11 functions in <uchar.h> should be imported into namespace std
+ in <cuchar>. */
+#undef _GLIBCXX_USE_C11_UCHAR_CXX11
+
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
<stdio.h>, and <stdlib.h> can be used or exposed. */
#undef _GLIBCXX_USE_C99
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 8646465fbbe..6d35f30a18a 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -18149,6 +18149,87 @@ fi
+
+ # Test uchar.h.
+ for ac_header in uchar.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "uchar.h" "ac_cv_header_uchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_uchar_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_UCHAR_H 1
+_ACEOF
+ ac_has_uchar_h=yes
+else
+ ac_has_uchar_h=no
+fi
+
+done
+
+
+
+ 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
+
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -std=c++11"
+
+ if test x"$ac_has_uchar_h" = x"yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C11 support for <uchar.h>" >&5
+$as_echo_n "checking for ISO C11 support for <uchar.h>... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <uchar.h>
+ #ifdef __STDC_UTF_16__
+ long i = __STDC_UTF_16__;
+ #endif
+ #ifdef __STDC_UTF_32__
+ long j = __STDC_UTF_32__;
+ #endif
+ namespace test
+ {
+ using ::c16rtomb;
+ using ::c32rtomb;
+ using ::mbrtoc16;
+ using ::mbrtoc32;
+ }
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_c11_uchar_cxx11=yes
+else
+ ac_c11_uchar_cxx11=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ ac_c11_uchar_cxx11=no
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_c11_uchar_cxx11" >&5
+$as_echo "$ac_c11_uchar_cxx11" >&6; }
+ if test x"$ac_c11_uchar_cxx11" = x"yes"; then
+
+$as_echo "#define _GLIBCXX_USE_C11_UCHAR_CXX11 1" >>confdefs.h
+
+ fi
+
+ 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
+
+
+
# For the streamoff typedef.
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 96ff16f3f3e..34563480634 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -181,6 +181,7 @@ GLIBCXX_ENABLE_VTABLE_VERIFY([no])
# Checks for operating systems support that doesn't require linking.
GLIBCXX_CHECK_STDIO_PROTO
GLIBCXX_CHECK_SYSTEM_ERROR
+GLIBCXX_CHECK_UCHAR_H
# For the streamoff typedef.
GLIBCXX_CHECK_INT64_T
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 41fc4af6d30..e579b22f1b1 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -710,6 +710,7 @@ c_base_headers = \
${c_base_srcdir}/cstring \
${c_base_srcdir}/ctgmath \
${c_base_srcdir}/ctime \
+ ${c_base_srcdir}/cuchar \
${c_base_srcdir}/cwchar \
${c_base_srcdir}/cwctype
@@ -752,6 +753,7 @@ c_compatibility_headers = \
${c_compatibility_srcdir}/string.h \
${c_compatibility_srcdir}/tgmath.h \
${c_compatibility_srcdir}/time.h \
+ ${c_compatibility_srcdir}/uchar.h \
${c_compatibility_srcdir}/wchar.h \
${c_compatibility_srcdir}/wctype.h
endif
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 6470d0173d5..47066705d23 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -997,6 +997,7 @@ c_base_headers = \
${c_base_srcdir}/cstring \
${c_base_srcdir}/ctgmath \
${c_base_srcdir}/ctime \
+ ${c_base_srcdir}/cuchar \
${c_base_srcdir}/cwchar \
${c_base_srcdir}/cwctype
@@ -1033,6 +1034,7 @@ c_compatibility_builddir = .
@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/string.h \
@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/tgmath.h \
@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/time.h \
+@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/uchar.h \
@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/wchar.h \
@GLIBCXX_C_HEADERS_C_TRUE@ ${c_compatibility_srcdir}/wctype.h
diff --git a/libstdc++-v3/include/c/cuchar b/libstdc++-v3/include/c/cuchar
new file mode 100644
index 00000000000..dd50c47bbe0
--- /dev/null
+++ b/libstdc++-v3/include/c/cuchar
@@ -0,0 +1,47 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+//
+// ISO C++ 14882:2011 21.8
+//
+
+#ifndef _GLIBCXX_CUCHAR
+#define _GLIBCXX_CUCHAR 1
+
+#pragma GCC system_header
+
+#if __cplusplus < 201103L
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+#include <cwchar>
+
+#if _GLIBCXX_USE_C11_UCHAR_CXX11
+# include_next <uchar.h>
+#endif
+
+#endif // C++11
+
+#endif // _GLIBCXX_CUCHAR
diff --git a/libstdc++-v3/include/c_compatibility/uchar.h b/libstdc++-v3/include/c_compatibility/uchar.h
new file mode 100644
index 00000000000..746f4afb339
--- /dev/null
+++ b/libstdc++-v3/include/c_compatibility/uchar.h
@@ -0,0 +1,45 @@
+// -*- C++ -*- compatibility header.
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file uchar.h
+ * This is a Standard C++ Library header.
+ */
+
+#include <cuchar>
+
+#ifndef _GLIBCXX_UCHAR_H
+#define _GLIBCXX_UCHAR_H 1
+
+#ifdef _GLIBCXX_NAMESPACE_C
+
+#if _GLIBCXX_USE_C11_UCHAR_CXX11
+using std::mbrtoc16;
+using std::c16rtomb;
+using std::mbrtoc32;
+using std::c32rtomb;
+#endif // _GLIBCXX_USE_C11_UCHAR_CXX11
+
+#endif // _GLIBCXX_NAMESPACE_C
+
+#endif // _GLIBCXX_UCHAR_H
diff --git a/libstdc++-v3/include/c_global/cuchar b/libstdc++-v3/include/c_global/cuchar
new file mode 100644
index 00000000000..3b30c6a9b4b
--- /dev/null
+++ b/libstdc++-v3/include/c_global/cuchar
@@ -0,0 +1,77 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cuchar
+ * This is a Standard C++ Library file. You should @c \#include this file
+ * in your programs, rather than any of the @a *.h implementation files.
+ *
+ * This is the C++ version of the Standard C Library header @c uchar.h,
+ * and its contents are (mostly) the same as that header, but are all
+ * contained in the namespace @c std (except for names which are defined
+ * as macros in C).
+ */
+
+//
+// ISO C++ 14882:2011 21.8
+//
+
+#ifndef _GLIBCXX_CUCHAR
+#define _GLIBCXX_CUCHAR 1
+
+#pragma GCC system_header
+
+#if __cplusplus < 201103L
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+#include <cwchar>
+
+#if _GLIBCXX_USE_C11_UCHAR_CXX11
+
+#include <uchar.h>
+
+// Get rid of those macros defined in <uchar.h> in lieu of real functions.
+#undef mbrtoc16
+#undef c16rtomb
+#undef mbrtoc32
+#undef c32rtomb
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ using ::mbrtoc16;
+ using ::c16rtomb;
+ using ::mbrtoc32;
+ using ::c32rtomb;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // _GLIBCXX_USE_C11_UCHAR_CXX11
+
+#endif // C++11
+
+#endif // _GLIBCXX_CUCHAR
diff --git a/libstdc++-v3/include/c_std/cuchar b/libstdc++-v3/include/c_std/cuchar
new file mode 100644
index 00000000000..7d5eedbc63b
--- /dev/null
+++ b/libstdc++-v3/include/c_std/cuchar
@@ -0,0 +1,77 @@
+// -*- C++ -*- forwarding header.
+
+// Copyright (C) 2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file include/cuchar
+ * This is a Standard C++ Library file. You should @c #include this file
+ * in your programs, rather than any of the @a *.h implementation files.
+ *
+ * This is the C++ version of the Standard C Library header @c uchar.h,
+ * and its contents are (mostly) the same as that header, but are all
+ * contained in the namespace @c std (except for names which are defined
+ * as macros in C).
+ */
+
+//
+// ISO C++ 14882:2011 21.8
+//
+
+#ifndef _GLIBCXX_CUCHAR
+#define _GLIBCXX_CUCHAR 1
+
+#pragma GCC system_header
+
+#if __cplusplus < 201103L
+# include <bits/c++0x_warning.h>
+#else
+
+#include <bits/c++config.h>
+#include <cwchar>
+
+#if _GLIBCXX_USE_C11_UCHAR_CXX11
+
+#include <uchar.h>
+
+// Get rid of those macros defined in <uchar.h> in lieu of real functions.
+#undef mbrtoc16
+#undef c16rtomb
+#undef mbrtoc32
+#undef c32rtomb
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ using ::mbrtoc16;
+ using ::c16rtomb;
+ using ::mbrtoc32;
+ using ::c32rtomb;
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+
+#endif // _GLIBCXX_USE_C11_UCHAR_CXX11
+
+#endif // C++11
+
+#endif // _GLIBCXX_CUCHAR
diff --git a/libstdc++-v3/include/precompiled/stdc++.h b/libstdc++-v3/include/precompiled/stdc++.h
index 693391adffb..ab119fecd2f 100644
--- a/libstdc++-v3/include/precompiled/stdc++.h
+++ b/libstdc++-v3/include/precompiled/stdc++.h
@@ -56,6 +56,7 @@
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
+#include <cuchar>
#include <cwchar>
#include <cwctype>
#endif
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
index 50c32744732..d1c64b190a8 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
@@ -59,6 +59,9 @@
#include <tgmath.h>
#endif
#include <time.h>
+#if __has_include(<uchar.h>)
+#include <uchar.h>
+#endif
#ifdef _GLIBCXX_HAVE_WCHAR_H
#include <wchar.h>
#endif
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc b/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc
index 9fa919f21c5..e51bdee70f6 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc
@@ -59,6 +59,9 @@
#include <tgmath.h>
#endif
#include <time.h>
+#if __has_include(<uchar.h>)
+#include <uchar.h>
+#endif
#ifdef _GLIBCXX_HAVE_WCHAR_H
#include <wchar.h>
#endif
@@ -103,6 +106,9 @@
#include <tgmath.h>
#endif
#include <time.h>
+#if __has_include(<uchar.h>)
+#include <uchar.h>
+#endif
#ifdef _GLIBCXX_HAVE_WCHAR_H
#include <wchar.h>
#endif