r292866. On Mon, Jan 23, 2017 at 5:22 PM, Hans Wennborg <h...@chromium.org> wrote:
> 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