Store params in stack properly as well
This commit is contained in:
parent
acd1e5d39b
commit
01d4999e14
@ -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
9
test.c
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user