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>