Sounds good to me.
On Mon, Jan 23, 2017 at 1:56 PM, Eric Fiselier <e...@efcs.ca> wrote: > This patch should be merge into 4.0 since it is needed to fix compile time > regressions in <string> when using Clang 3.4 and C++03. > > See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216054 for more info. > > /Eric > > On Mon, Jan 23, 2017 at 2:41 PM, Eric Fiselier via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> Author: ericwf >> Date: Mon Jan 23 15:41:13 2017 >> New Revision: 292833 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=292833&view=rev >> Log: >> 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. >> >> Modified: >> libcxx/trunk/include/__config >> >> Modified: libcxx/trunk/include/__config >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=292833&r1=292832&r2=292833&view=diff >> >> ============================================================================== >> --- libcxx/trunk/include/__config (original) >> +++ libcxx/trunk/include/__config Mon Jan 23 15:41:13 2017 >> @@ -109,6 +109,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) >> @@ -117,6 +120,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. >> @@ -754,7 +761,7 @@ template <unsigned> struct __static_asse >> >> #ifdef _LIBCPP_HAS_NO_DECLTYPE >> // GCC 4.6 provides __decltype in all standard modes. >> -#if __has_keyword(__decltype) || _GNUC_VER >= 406 >> +#if __has_keyword(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= >> 406 >> # define decltype(__x) __decltype(__x) >> #else >> # define decltype(__x) __typeof__(__x) >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits