summaryrefslogtreecommitdiffstats
path: root/clang/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'clang/CodeGen')
-rw-r--r--clang/CodeGen/CGExpr.cpp14
-rw-r--r--clang/CodeGen/CodeGenTypes.cpp21
2 files changed, 11 insertions, 24 deletions
diff --git a/clang/CodeGen/CGExpr.cpp b/clang/CodeGen/CGExpr.cpp
index a8ad1f47e93..f0a0f6ee189 100644
--- a/clang/CodeGen/CGExpr.cpp
+++ b/clang/CodeGen/CGExpr.cpp
@@ -150,17 +150,13 @@ llvm::Value *CodeGenFunction::ConvertScalarValueToBool(RValue Val, QualType Ty){
Result = Builder.CreateFCmpUNE(Result, Zero, "tobool");
return Result;
}
-
- case BuiltinType::FloatComplex:
- case BuiltinType::DoubleComplex:
- case BuiltinType::LongDoubleComplex:
- assert(0 && "comparisons against complex not implemented yet");
}
- } else {
- assert((isa<PointerType>(Ty) ||
- cast<TagType>(Ty)->getDecl()->getKind() == Decl::Enum) &&
- "Unknown scalar type");
+ } else if (isa<PointerType>(Ty) ||
+ cast<TagType>(Ty)->getDecl()->getKind() == Decl::Enum) {
// Code below handles this fine.
+ } else {
+ assert(isa<ComplexType>(Ty) && "Unknwon type!");
+ assert(0 && "FIXME: comparisons against complex not implemented yet");
}
// Usual case for integers, pointers, and enums: compare against zero.
diff --git a/clang/CodeGen/CodeGenTypes.cpp b/clang/CodeGen/CodeGenTypes.cpp
index 63f3600b94c..4210402bc5d 100644
--- a/clang/CodeGen/CodeGenTypes.cpp
+++ b/clang/CodeGen/CodeGenTypes.cpp
@@ -63,24 +63,15 @@ const llvm::Type *CodeGenTypes::ConvertType(QualType T) {
case BuiltinType::LongDouble:
// FIXME: mapping long double onto double.
return llvm::Type::DoubleTy;
- case BuiltinType::FloatComplex: {
- std::vector<const llvm::Type*> Elts;
- Elts.push_back(llvm::Type::FloatTy);
- Elts.push_back(llvm::Type::FloatTy);
- return llvm::StructType::get(Elts);
- }
-
- case BuiltinType::LongDoubleComplex:
- // FIXME: mapping long double complex onto double complex.
- case BuiltinType::DoubleComplex: {
- std::vector<const llvm::Type*> Elts;
- Elts.push_back(llvm::Type::DoubleTy);
- Elts.push_back(llvm::Type::DoubleTy);
- return llvm::StructType::get(Elts);
- }
}
break;
}
+ case Type::Complex: {
+ std::vector<const llvm::Type*> Elts;
+ Elts.push_back(ConvertType(cast<ComplexType>(Ty).getElementType()));
+ Elts.push_back(Elts[0]);
+ return llvm::StructType::get(Elts);
+ }
case Type::Pointer: {
const PointerType &P = cast<PointerType>(Ty);
return llvm::PointerType::get(ConvertType(P.getPointeeType()));
OpenPOWER on IntegriCloud