aboutsummaryrefslogtreecommitdiffstats
path: root/llvm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm.cpp')
-rw-r--r--llvm.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm.cpp b/llvm.cpp
index a081c0a..ef52b88 100644
--- a/llvm.cpp
+++ b/llvm.cpp
@@ -325,7 +325,7 @@ ACall::compile(CEnv& cenv)
void
ADefinition::lift(CEnv& cenv)
{
- // Define first for recursion
+ // Define stub first for recursion
cenv.def(at(1)->as<ASymbol*>(), at(2), cenv.type(at(2)), NULL);
AClosure* c = at(2)->to<AClosure*>();
if (c)
@@ -336,9 +336,11 @@ ADefinition::lift(CEnv& cenv)
CValue
ADefinition::compile(CEnv& cenv)
{
- // Define first for recursion
+ // Define stub first for recursion
cenv.def(at(1)->as<ASymbol*>(), at(2), cenv.type(at(2)), NULL);
- return cenv.compile(at(2));
+ CValue val = cenv.compile(at(2));
+ cenv.vals.def(at(1)->as<ASymbol*>(), val);
+ return val;
}
CValue