From 95901f3a5fa0ec18128030c915d1d94bade5de94 Mon Sep 17 00:00:00 2001
From: Clyne Sullivan <clyne@bitgloo.com>
Date: Thu, 20 Jun 2024 18:01:48 -0400
Subject: global env; alloca locals

kinda messy
---
 main.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

(limited to 'main.cpp')

diff --git a/main.cpp b/main.cpp
index 19b76fe..5ae41bc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -48,7 +48,17 @@ int main()
         }
     }
 
+    auto func = llvmState.createFunction("main");
+    auto entry = llvmState.createEntry(func);
+    auto envtype = llvm::VectorType::get(llvmState.inttype, ThunkAST::envidx, false);
+    auto [t0, _] = Var::lookup("__t0");
+    llvmState.builder.SetInsertPoint(entry);
+    auto env = llvmState.builder.CreateAlloca(envtype, nullptr);
+    llvmState.builder.CreateCall(llvmState.ftype, t0, llvm::ArrayRef<llvm::Value *> {env});
+    llvmState.builder.CreateRetVoid();
+
     llvmState.output();
+    std::cerr << "envidx: " << ThunkAST::envidx << std::endl;
     std::cout << std::endl;
 }
 
@@ -65,10 +75,7 @@ bool parseString(std::string_view sv)
 
             switch (tok) {
             case Token::ThunkOpen:
-                if (scope.empty())
-                    scope.emplace_back(llvmState, "main");
-                else
-                    scope.emplace_back(llvmState);
+                scope.emplace_back(llvmState);
                 Var::pushScope();
                 break;
             case Token::ThunkClose:
-- 
cgit v1.2.3