Fix bug in deref

This commit is contained in:
Sofia 2026-04-14 00:09:36 +03:00
parent d4016e3ab7
commit acd1e5d39b
2 changed files with 2 additions and 3 deletions

View File

@ -119,8 +119,7 @@ namespace AST {
codegen::StackValue DerefExpression::codegen(codegen::Builder& builder, codegen::Scope& scope) { codegen::StackValue DerefExpression::codegen(codegen::Builder& builder, codegen::Scope& scope) {
auto value = this->m_expr->codegen(builder, scope); auto value = this->m_expr->codegen(builder, scope);
if (value.ty->m_kind == types::TypeKind::Pointer) { if (value.ty->m_kind == types::TypeKind::Pointer) {
auto ptr_ty = dynamic_cast<types::PointerType*>(value.ty.get()); auto loaded = value.ty->load(builder, value.value);
auto loaded = ptr_ty->m_inner->load(builder, value.value);
return codegen::StackValue{ return codegen::StackValue{
loaded.first, loaded.first,
loaded.second loaded.second

2
test.c
View File

@ -10,6 +10,6 @@ int main() {
printf("10th fibonacci number is %d!", fibonacci(10)); printf("10th fibonacci number is %d!", fibonacci(10));
char res = 0; char res = 0;
char* test = &res; char* test = &res;
(*test) = 15; (*test) = 20;
return res; return res;
} }