diff options
Diffstat (limited to 'clang/CodeGen')
| -rw-r--r-- | clang/CodeGen/CGExpr.cpp | 14 | ||||
| -rw-r--r-- | clang/CodeGen/CodeGenTypes.cpp | 21 |
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())); |

