]> granicus.if.org Git - clang/commitdiff
stub out complex -> bool conversion.
authorChris Lattner <sabre@nondot.org>
Fri, 24 Aug 2007 00:01:20 +0000 (00:01 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 24 Aug 2007 00:01:20 +0000 (00:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41347 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CGExpr.cpp

index 64067e79ee7b8e951887fbe384caf10e611fbd8f..508b2833cd31a1afb1d2aaa2cdcb8e255be0f51a 100644 (file)
@@ -37,7 +37,7 @@ llvm::AllocaInst *CodeGenFunction::CreateTempAlloca(const llvm::Type *Ty,
 /// EvaluateExprAsBool - Perform the usual unary conversions on the specified
 /// expression and compare the result against zero, returning an Int1Ty value.
 llvm::Value *CodeGenFunction::EvaluateExprAsBool(const Expr *E) {
-  return ConvertScalarValueToBool(EmitExpr(E), E->getType());
+  return ConvertScalarValueToBool(EmitAnyExpr(E), E->getType());
 }
 
 //===--------------------------------------------------------------------===//
@@ -160,12 +160,15 @@ llvm::Value *CodeGenFunction::ConvertScalarValueToBool(RValue Val, QualType Ty){
       return Result;
     }
     }
-  } else if (isa<PointerType>(Ty) || 
-             cast<TagType>(Ty)->getDecl()->getKind() == Decl::Enum) {
-    // Code below handles this fine.
+  } else if (isa<ComplexType>(Ty)) {
+    assert(0 && "implement complex -> bool");
+    
   } else {
-    assert(isa<ComplexType>(Ty) && "Unknwon type!");
-    assert(0 && "FIXME: comparisons against complex not implemented yet");
+    assert((isa<PointerType>(Ty) ||
+            (isa<TagType>(Ty) &&
+             cast<TagType>(Ty)->getDecl()->getKind() == Decl::Enum)) &&
+           "Unknown Type");
+    // Code below handles this case fine.
   }
   
   // Usual case for integers, pointers, and enums: compare against zero.
@@ -642,7 +645,7 @@ RValue CodeGenFunction::EmitArraySubscriptExprRV(const ArraySubscriptExpr *E) {
 // have to handle a more broad range of conversions than explicit casts, as they
 // handle things like function to ptr-to-function decay etc.
 RValue CodeGenFunction::EmitCastExpr(const Expr *Op, QualType DestTy) {
-  RValue Src = EmitExpr(Op);
+  RValue Src = EmitAnyExpr(Op);
   
   // If the destination is void, just evaluate the source.
   if (DestTy->isVoidType())