ObjCBoolLiterals (__objc_yes/__objc_no) behave like C++ booleans (true/false). They are NOT objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152564 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index e2fc120..ffc8fea 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -2131,7 +2131,6 @@
// potentially throwing unless we decide to close off that
// possibility.
case ObjCArrayLiteralClass:
- case ObjCBoolLiteralExprClass:
case ObjCDictionaryLiteralClass:
case ObjCNumericLiteralClass:
return CT_Can;
@@ -2231,6 +2230,7 @@
case IntegerLiteralClass:
case ObjCEncodeExprClass:
case ObjCStringLiteralClass:
+ case ObjCBoolLiteralExprClass:
case OpaqueValueExprClass:
case PredefinedExprClass:
case SizeOfPackExprClass:
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 16cfc3b..c759e7a 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -8294,7 +8294,7 @@
template<typename Derived>
ExprResult
TreeTransform<Derived>::TransformObjCBoolLiteralExpr(ObjCBoolLiteralExpr *E) {
- return SemaRef.MaybeBindToTemporary(E);
+ return SemaRef.Owned(E);
}
template<typename Derived>