]> granicus.if.org Git - clang/commitdiff
Introduce ASTContext::getLogicalOperationType() to return bool or int, depending...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 18 Feb 2011 20:55:15 +0000 (20:55 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 18 Feb 2011 20:55:15 +0000 (20:55 +0000)
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125957 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ASTContext.h
lib/Sema/SemaExpr.cpp

index 244cf26b89b32beddca8435ab07e180d04b62807..7d2bd14ea9451ca91cee8037c579c4a180926589 100644 (file)
@@ -844,6 +844,11 @@ public:
     return QualType();
   }
 
+  /// \brief The result type of logical operations, '<', '>', '!=', etc.
+  QualType getLogicalOperationType() const {
+    return getLangOptions().CPlusPlus ? BoolTy : IntTy;
+  }
+
   /// getObjCEncodingForType - Emit the ObjC type encoding for the
   /// given type into \arg S. If \arg NameFields is specified then
   /// record field names are also encoded.
index 92e671165b548e84607ca706911b416caa56e18b..d5e6e77c3e57927b2e287cd5ad53fbb6f192f90b 100644 (file)
@@ -6772,7 +6772,7 @@ QualType Sema::CheckCompareOperands(Expr *&lex, Expr *&rex, SourceLocation Loc,
   rType = rex->getType();
 
   // The result of comparisons is 'bool' in C++, 'int' in C.
-  QualType ResultTy = getLangOptions().CPlusPlus ? Context.BoolTy:Context.IntTy;
+  QualType ResultTy = Context.getLogicalOperationType();
 
   if (isRelational) {
     if (lType->isRealType() && rType->isRealType())
@@ -7051,7 +7051,7 @@ QualType Sema::CheckVectorCompareOperands(Expr *&lex, Expr *&rex,
   // If AltiVec, the comparison results in a numeric type, i.e.
   // bool for C++, int for C
   if (getLangOptions().AltiVec)
-    return (getLangOptions().CPlusPlus ? Context.BoolTy : Context.IntTy);
+    return Context.getLogicalOperationType();
 
   QualType lType = lex->getType();
   QualType rType = rex->getType();
@@ -8303,7 +8303,7 @@ ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc,
     
     // LNot always has type int. C99 6.5.3.3p5.
     // In C++, it's bool. C++ 5.3.1p8
-    resultType = getLangOptions().CPlusPlus ? Context.BoolTy : Context.IntTy;
+    resultType = Context.getLogicalOperationType();
     break;
   case UO_Real:
   case UO_Imag: