diff options
| Commit | 65b85d46c6d61534906dc019731afabd45caf5cf (patch) | |
|---|---|---|
| Author | 2023-02-08 00:35:05 +0200 | |
| Committer | 2023-02-08 00:35:05 +0200 | |
| Files | 4224af821c9dda1f01c25cba13f80d8908f7ab0e | |
| uni-projects-65b85d46c6d61534906dc019731afabd45caf5cf.tar uni-projects-65b85d46c6d61534906dc019731afabd45caf5cf.tar.gz uni-projects-65b85d46c6d61534906dc019731afabd45caf5cf.zip | ||
| Parent | b8d2ea4f75c21b46f37310e94d2409290b35469a (diff) | |
[IPL/T] Memory is now being freed up
1 files changed, 15 insertions, 0 deletions
| -rw-r--r-- | Year 2/Implementation of Programming Languages/Transpiler/src/main.cpp | 15 |
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 <deque> #include "LLVMVisitor/LLVMVisitor.h" +void freeNodes(Value* v) { + if (dynamic_cast<Funcall*>(v) != nullptr) { + for (Value* val : static_cast<Funcall*>(v)->get_args()) + freeNodes(val); + } + else if (dynamic_cast<List*>(v) != nullptr) { + for (Value* val : static_cast<List*>(v)->get_value()) + freeNodes(val); + } + delete v; +} + int main() { LLVMVisitor visitor("testout.ll"); std::deque<Value*> nodes = { @@ -32,4 +44,7 @@ int main() { n->Visit(visitor); } visitor.insertMain(); + + for (Value* n : nodes) + freeNodes(n); } |
