]> granicus.if.org Git - clang/commit
Clang support for __is_assignable intrinsic
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 23 May 2016 17:21:55 +0000 (17:21 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 23 May 2016 17:21:55 +0000 (17:21 +0000)
commitd1cedd4e9c5dc6ebe43534b7a376c254a7caaaae
treea5bafb7359e5dc8bb90ed723d86c695235dc046f
parent6b373d1daba236a6c672e8a4e21b519cda0540a4
Clang support for __is_assignable intrinsic

MSVC now supports the __is_assignable type trait intrinsic,
to enable easier and more efficient implementation of the
Standard Library's is_assignable trait.
As of Visual Studio 2015 Update 3, the VC Standard Library
implementation uses the new intrinsic unconditionally.

The implementation is pretty straightforward due to the previously
existing is_nothrow_assignable and is_trivially_assignable.
We handle __is_assignable via the same code as the other two except
that we skip the extra checks for nothrow or triviality.

Patch by Dave Bartolomeo!

Differential Revision: http://reviews.llvm.org/D20492

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@270458 91177308-0d34-0410-b5e6-96231b3b80d8
docs/LanguageExtensions.rst
include/clang/Basic/TokenKinds.def
include/clang/Basic/TypeTraits.h
lib/Lex/PPMacroExpansion.cpp
lib/Parse/ParseDeclCXX.cpp
lib/Parse/ParseExpr.cpp
lib/Sema/SemaExprCXX.cpp
test/Lexer/has_feature_type_traits.cpp
test/PCH/cxx-traits.cpp
test/PCH/cxx-traits.h
test/SemaCXX/type-traits.cpp