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;
|
int counter = 0;
|
||||||
for (auto& param : this->m_params) {
|
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++);
|
auto arg = function->getArg(counter++);
|
||||||
|
builder.builder->CreateStore(arg, arg_ptr);
|
||||||
if (param.first) {
|
if (param.first) {
|
||||||
arg->setName(*param.first);
|
arg->setName(*param.first);
|
||||||
inner_scope.values[*param.first] = codegen::StackValue{
|
inner_scope.values[*param.first] = codegen::StackValue{
|
||||||
arg,
|
arg_ptr,
|
||||||
param_ty_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);
|
return fibonacci(n - 1) + fibonacci(n - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void modifyvalue(char* otus) {
|
||||||
|
(*otus) = 20;
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
printf("10th fibonacci number is %d!", fibonacci(10));
|
printf("10th fibonacci number is %d!", fibonacci(10));
|
||||||
char res = 0;
|
char res = 10;
|
||||||
char* test = &res;
|
modifyvalue(&res);
|
||||||
(*test) = 20;
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user