From f9208a525d5417a53842462f4f44c264da83d052 Mon Sep 17 00:00:00 2001 From: Sofia Date: Thu, 16 Apr 2026 19:23:29 +0300 Subject: [PATCH] Fix how pointer indexing works --- src/codegen.cpp | 19 ++++++------------- test.c | 2 +- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 33fe17f..857c498 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -267,19 +267,12 @@ namespace AST { auto ptr_ty = dynamic_cast(value.ty.get()); auto gep_value = builder.builder->CreateGEP(ptr_ty->m_inner->codegen(builder, scope.structs), value.value, idx_list, "GEP"); - if (scope.is_lvalue) { - return codegen::StackValue{ - gep_value, - value.ty, - }; - } - else { - auto loaded = value.ty->load(builder, gep_value, scope.structs); - return codegen::StackValue{ - loaded.first, - loaded.second - }; - } + + auto loaded = value.ty->load(builder, gep_value, scope.structs); + return codegen::StackValue{ + loaded.first, + loaded.second + }; } else if (value.ty->m_kind == types::TypeKind::Array) { auto array_ty = dynamic_cast(value.ty.get()); diff --git a/test.c b/test.c index 377779e..a6784cd 100644 --- a/test.c +++ b/test.c @@ -6,7 +6,7 @@ int fibonacci(int n) { return fibonacci(n - 1) + fibonacci(n - 2); } -void change_first(char otus[5]) { +void change_first(char otus[]) { otus[0] = 115; }