Fix how pointer indexing works
This commit is contained in:
parent
6dad36e34a
commit
f9208a525d
@ -267,19 +267,12 @@ namespace AST {
|
|||||||
auto ptr_ty = dynamic_cast<types::PointerType*>(value.ty.get());
|
auto ptr_ty = dynamic_cast<types::PointerType*>(value.ty.get());
|
||||||
|
|
||||||
auto gep_value = builder.builder->CreateGEP(ptr_ty->m_inner->codegen(builder, scope.structs), value.value, idx_list, "GEP");
|
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{
|
auto loaded = value.ty->load(builder, gep_value, scope.structs);
|
||||||
gep_value,
|
return codegen::StackValue{
|
||||||
value.ty,
|
loaded.first,
|
||||||
};
|
loaded.second
|
||||||
}
|
};
|
||||||
else {
|
|
||||||
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) {
|
else if (value.ty->m_kind == types::TypeKind::Array) {
|
||||||
auto array_ty = dynamic_cast<types::ArrayType*>(value.ty.get());
|
auto array_ty = dynamic_cast<types::ArrayType*>(value.ty.get());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user