Store params in stack properly as well

This commit is contained in:
Sofia 2026-04-14 00:25:11 +03:00
parent acd1e5d39b
commit 01d4999e14
2 changed files with 13 additions and 5 deletions

View File

@ -231,12 +231,17 @@ namespace AST {
int counter = 0;
for (auto& param : this->m_params) {
auto param_ty_ptr = param_ty_ptrs[counter];
builder.builder->SetInsertPoint(BB);
auto arg_ptr = builder.builder->CreateAlloca(param_ty_ptrs[counter]->codegen(builder));
auto param_ty_ptr = std::shared_ptr<types::Type>{
new types::PointerType { param_ty_ptrs[counter]}
};
auto arg = function->getArg(counter++);
builder.builder->CreateStore(arg, arg_ptr);
if (param.first) {
arg->setName(*param.first);
inner_scope.values[*param.first] = codegen::StackValue{
arg,
arg_ptr,
param_ty_ptr,
};
}

9
test.c
View File

@ -6,10 +6,13 @@ int fibonacci(int n) {
return fibonacci(n - 1) + fibonacci(n - 2);
}
void modifyvalue(char* otus) {
(*otus) = 20;
}
int main() {
printf("10th fibonacci number is %d!", fibonacci(10));
char res = 0;
char* test = &res;
(*test) = 20;
char res = 10;
modifyvalue(&res);
return res;
}