svn commit: r312675 - projects/clang400-import/contrib/libc++/include

Dimitry Andric dim at FreeBSD.org
Mon Jan 23 23:20:02 UTC 2017


Author: dim
Date: Mon Jan 23 23:20:00 2017
New Revision: 312675
URL: https://svnweb.freebsd.org/changeset/base/312675

Log:
  Pull in r292833 from upstream libc++ trunk (by Eric Fiselier):
  
    Manually force the use of __decltype in C++03 with Clang 3.4.
  
    <string> uses `decltype` in a way incompatible with `__typeof__`.
    This is problematic when compiling <string> with Clang 3.4 because
    even though it provides `__decltype` libc++ still used `__typeof__`
    because clang 3.4 doesn't provide __is_identifier which libc++
    uses to detect __decltype.
  
    This patch manually detects Clang 3.4 and properly configures
    for it.
  
  This allows the graphics/openshadinglanguage port to build with
  lang/clang34.
  
  PR:		216054

Modified:
  projects/clang400-import/contrib/libc++/include/__config

Modified: projects/clang400-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__config	Mon Jan 23 23:14:41 2017	(r312674)
+++ projects/clang400-import/contrib/libc++/include/__config	Mon Jan 23 23:20:00 2017	(r312675)
@@ -103,6 +103,9 @@
 
 #if defined(__clang__)
 #define _LIBCPP_COMPILER_CLANG
+# ifndef __apple_build_version__
+#   define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
+# endif
 #elif defined(__GNUC__)
 #define _LIBCPP_COMPILER_GCC
 #elif defined(_MSC_VER)
@@ -111,6 +114,10 @@
 #define _LIBCPP_COMPILER_IBM
 #endif
 
+#ifndef _LIBCPP_CLANG_VER
+#define _LIBCPP_CLANG_VER 0
+#endif
+
 // FIXME: ABI detection should be done via compiler builtin macros. This
 // is just a placeholder until Clang implements such macros. For now assume
 // that Windows compilers pretending to be MSVC++ target the microsoft ABI.
@@ -741,7 +748,7 @@ template <unsigned> struct __static_asse
 
 #ifdef _LIBCPP_HAS_NO_DECLTYPE
 // GCC 4.6 provides __decltype in all standard modes.
-#if !__is_identifier(__decltype) || _GNUC_VER >= 406
+#if !__is_identifier(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= 406
 #  define decltype(__x) __decltype(__x)
 #else
 #  define decltype(__x) __typeof__(__x)


More information about the svn-src-projects mailing list