Date: Mon, 23 Jan 2017 23:20:00 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r312675 - projects/clang400-import/contrib/libc++/include Message-ID: <201701232320.v0NNK0Dv078765@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701232320.v0NNK0Dv078765>