summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2013-12-07 07:20:22 +0000
committerAlp Toker <alp@nuanti.com>2013-12-07 07:20:22 +0000
commit8baeac7bfd25e15d07bace7bf3b749bc9d973559 (patch)
tree78827bc4a564f5f716540fec5fdb67500f42c550
parentdb47bcc63d77a3268c9373d4debfa9c8b70001a5 (diff)
downloadbcm5719-llvm-8baeac7bfd25e15d07bace7bf3b749bc9d973559.tar.gz
bcm5719-llvm-8baeac7bfd25e15d07bace7bf3b749bc9d973559.zip
Type traits: No need for switch to handle __builtin_types_compatible_p
__builtin_types_compatible_p() isn't a C++ type trait at all, rather a GNU C special-case, so it's fine to use BoolTy the default return type for binary type traits. This brings BTT in line with other arities that already default to BoolTy. Cleanup only, no change in behaviour. llvm-svn: 196646
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 46844d7662d..48b49f550cf 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -3938,16 +3938,10 @@ ExprResult Sema::BuildBinaryTypeTrait(BinaryTypeTrait BTT,
if (!LhsT->isDependentType() && !RhsT->isDependentType())
Value = EvaluateBinaryTypeTrait(*this, BTT, LhsT, RhsT, KWLoc);
- // Select trait result type.
- QualType ResultType;
- switch (BTT) {
- case BTT_IsBaseOf: ResultType = Context.BoolTy; break;
- case BTT_IsConvertible: ResultType = Context.BoolTy; break;
- case BTT_IsSame: ResultType = Context.BoolTy; break;
- case BTT_TypeCompatible: ResultType = Context.IntTy; break;
- case BTT_IsConvertibleTo: ResultType = Context.BoolTy; break;
- case BTT_IsTriviallyAssignable: ResultType = Context.BoolTy;
- }
+ QualType ResultType = Context.BoolTy;
+ // __builtin_types_compatible_p is a GNU C extension, not a C++ type trait.
+ if (BTT == BTT_TypeCompatible)
+ ResultType = Context.IntTy;
return Owned(new (Context) BinaryTypeTraitExpr(KWLoc, BTT, LhsTSInfo,
RhsTSInfo, Value, RParen,
OpenPOWER on IntegriCloud