diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-05-23 17:21:55 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-05-23 17:21:55 +0000 |
commit | b3d96882ec01a0c98e447b392f20a5d25f77a0ce (patch) | |
tree | 2d2053af6eae1d301d008ece2258b1a2ab57d3e8 /clang/lib/Parse/ParseExpr.cpp | |
parent | cd3ebfe293d02e18397356daa21517e0fa06c32a (diff) | |
download | bcm5719-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/Parse/ParseExpr.cpp')
-rw-r--r-- | clang/lib/Parse/ParseExpr.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index 5b7c839454a..927bb208c75 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -796,6 +796,7 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression, REVERTIBLE_TYPE_TRAIT(__is_abstract); REVERTIBLE_TYPE_TRAIT(__is_arithmetic); REVERTIBLE_TYPE_TRAIT(__is_array); + REVERTIBLE_TYPE_TRAIT(__is_assignable); REVERTIBLE_TYPE_TRAIT(__is_base_of); REVERTIBLE_TYPE_TRAIT(__is_class); REVERTIBLE_TYPE_TRAIT(__is_complete_type); |