From 65b85d46c6d61534906dc019731afabd45caf5cf Mon Sep 17 00:00:00 2001 From: Syndamia Date: Wed, 8 Feb 2023 00:35:05 +0200 Subject: [IPL/T] Memory is now being freed up --- .../Transpiler/src/main.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp') diff --git a/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp b/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp index cc5d771..bc651e6 100644 --- a/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp +++ b/Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp @@ -2,6 +2,18 @@ #include #include "LLVMVisitor/LLVMVisitor.h" +void freeNodes(Value* v) { + if (dynamic_cast(v) != nullptr) { + for (Value* val : static_cast(v)->get_args()) + freeNodes(val); + } + else if (dynamic_cast(v) != nullptr) { + for (Value* val : static_cast(v)->get_value()) + freeNodes(val); + } + delete v; +} + int main() { LLVMVisitor visitor("testout.ll"); std::deque nodes = { @@ -32,4 +44,7 @@ int main() { n->Visit(visitor); } visitor.insertMain(); + + for (Value* n : nodes) + freeNodes(n); } -- cgit v1.3.1-23-gd82d