diff --git a/Chapter06/tinylang/lib/CodeGen/CGModule.cpp b/Chapter06/tinylang/lib/CodeGen/CGModule.cpp index 4ea5561..496b80c 100644 --- a/Chapter06/tinylang/lib/CodeGen/CGModule.cpp +++ b/Chapter06/tinylang/lib/CodeGen/CGModule.cpp @@ -41,6 +41,9 @@ llvm::Type *CGModule::convertType(TypeDeclaration *Ty) { llvm::Type *Component = convertType(ArrayTy->getType()); Expr *Nums = ArrayTy->getNums(); uint64_t NumElements = 5; // TODO Eval Nums + if(auto *intergerExpr = llvm::dyn_cast(Nums)){ + NumElements = intergerExpr->getValue().getExtValue(); + } llvm::Type *T = llvm::ArrayType::get(Component, NumElements); return TypeCache[Ty] = T; diff --git a/Chapter07/tinylang/lib/CodeGen/CGModule.cpp b/Chapter07/tinylang/lib/CodeGen/CGModule.cpp index 9963d2c..f2f2673 100644 --- a/Chapter07/tinylang/lib/CodeGen/CGModule.cpp +++ b/Chapter07/tinylang/lib/CodeGen/CGModule.cpp @@ -43,6 +43,9 @@ llvm::Type *CGModule::convertType(TypeDeclaration *Ty) { llvm::Type *Component = convertType(ArrayTy->getType()); Expr *Nums = ArrayTy->getNums(); uint64_t NumElements = 5; // TODO Eval Nums + if(auto *intergerExpr = llvm::dyn_cast(Nums)){ + NumElements = intergerExpr->getValue().getExtValue(); + } llvm::Type *T = llvm::ArrayType::get(Component, NumElements); return TypeCache[Ty] = T; diff --git a/Chapter08/tinylang/lib/CodeGen/CGModule.cpp b/Chapter08/tinylang/lib/CodeGen/CGModule.cpp index 9963d2c..f2f2673 100644 --- a/Chapter08/tinylang/lib/CodeGen/CGModule.cpp +++ b/Chapter08/tinylang/lib/CodeGen/CGModule.cpp @@ -43,6 +43,9 @@ llvm::Type *CGModule::convertType(TypeDeclaration *Ty) { llvm::Type *Component = convertType(ArrayTy->getType()); Expr *Nums = ArrayTy->getNums(); uint64_t NumElements = 5; // TODO Eval Nums + if(auto *intergerExpr = llvm::dyn_cast(Nums)){ + NumElements = intergerExpr->getValue().getExtValue(); + } llvm::Type *T = llvm::ArrayType::get(Component, NumElements); return TypeCache[Ty] = T;