diff options
Diffstat (limited to 'CodeGen/CodeGenTypes.cpp')
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 08c46b54bd..85d55844b4 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -83,23 +83,23 @@ const llvm::Type *CodeGenTypes::ConvertType(QualType T) { return llvm::PointerType::get(ConvertType(R.getReferenceeType())); } - case Type::Array: { - const ArrayType &A = cast<ArrayType>(Ty); + case Type::VariableArray: { + const VariableArrayType &A = cast<VariableArrayType>(Ty); assert(A.getSizeModifier() == ArrayType::Normal && A.getIndexTypeQualifier() == 0 && "FIXME: We only handle trivial array types so far!"); - - llvm::APSInt Size(32); if (A.getSizeExpr() == 0) { // int X[] -> [0 x int] return llvm::ArrayType::get(ConvertType(A.getElementType()), 0); - } else if (A.getSizeExpr()->isIntegerConstantExpr(Size, Context)) { - const llvm::Type *EltTy = ConvertType(A.getElementType()); - return llvm::ArrayType::get(EltTy, Size.getZExtValue()); } else { assert(0 && "FIXME: VLAs not implemented yet!"); } } + case Type::ConstantArray: { + const ConstantArrayType &A = cast<ConstantArrayType>(Ty); + const llvm::Type *EltTy = ConvertType(A.getElementType()); + return llvm::ArrayType::get(EltTy, A.getSize().getZExtValue()); + } case Type::OCUVector: case Type::Vector: { const VectorType &VT = cast<VectorType>(Ty); |