aboutsummaryrefslogtreecommitdiff
path: root/include/cps/ArrayHandler.h
diff options
context:
space:
mode:
authorov-4 <hausemasterstream@gmail.com>2026-01-30 02:06:37 +0000
committerov-4 <hausemasterstream@gmail.com>2026-01-30 02:06:37 +0000
commit766a4b8e5236bffb40984439a79186c5ee823ff8 (patch)
treea4226690b4b95c916908afa0047899ff60e63c81 /include/cps/ArrayHandler.h
parent943ed04b775949e8bc4948bcb8d762a32ab14f76 (diff)
Added runtime check for array index and division
Diffstat (limited to 'include/cps/ArrayHandler.h')
-rw-r--r--include/cps/ArrayHandler.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/cps/ArrayHandler.h b/include/cps/ArrayHandler.h
index 5052de4..734f464 100644
--- a/include/cps/ArrayHandler.h
+++ b/include/cps/ArrayHandler.h
@@ -3,6 +3,7 @@
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "cps/AST.h"
+#include "cps/RuntimeCheck.h"
#include <map>
#include <string>
#include <vector>
@@ -26,6 +27,7 @@ class ArrayHandler {
std::map<std::string, llvm::AllocaInst*> *NamedValues;
std::map<std::string, ArrayMetadata> ArrayTable;
+ RuntimeCheck &RuntimeChecker;
llvm::FunctionCallee MallocFunc;
llvm::FunctionCallee FreeFunc;
@@ -41,6 +43,7 @@ public:
void emitArrayDeclare(ArrayDeclareStmtAST *Stmt, CodeGen &CG);
void emitArrayAssign(ArrayAssignStmtAST *Stmt, CodeGen &CG);
+ ArrayHandler(llvm::LLVMContext &C, llvm::IRBuilder<> &B, llvm::Module &M, std::map<std::string, llvm::AllocaInst*> &NV, RuntimeCheck &RC);
llvm::Value* emitArrayAccess(ArrayAccessExprAST *Expr, CodeGen &CG);