summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-05-23 17:21:55 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-05-23 17:21:55 +0000
commitb3d96882ec01a0c98e447b392f20a5d25f77a0ce (patch)
tree2d2053af6eae1d301d008ece2258b1a2ab57d3e8 /clang/lib/Lex
parentcd3ebfe293d02e18397356daa21517e0fa06c32a (diff)
downloadbcm5719-llvm-b3d96882ec01a0c98e447b392f20a5d25f77a0ce.tar.gz
bcm5719-llvm-b3d96882ec01a0c98e447b392f20a5d25f77a0ce.zip
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 llvm-svn: 270458
Diffstat (limited to 'clang/lib/Lex')
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index df4fdbaa96e..79ca9ebb706 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -1196,6 +1196,7 @@ static bool HasFeature(const Preprocessor &PP, StringRef Feature) {
.Case("has_trivial_destructor", LangOpts.CPlusPlus)
.Case("has_virtual_destructor", LangOpts.CPlusPlus)
.Case("is_abstract", LangOpts.CPlusPlus)
+ .Case("is_assignable", LangOpts.CPlusPlus)
.Case("is_base_of", LangOpts.CPlusPlus)
.Case("is_class", LangOpts.CPlusPlus)
.Case("is_constructible", LangOpts.CPlusPlus)
OpenPOWER on IntegriCloud