aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/src/expression.cpp')
-rw-r--r--c_compiler/src/expression.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/c_compiler/src/expression.cpp b/c_compiler/src/expression.cpp
index a323153..466d8f7 100644
--- a/c_compiler/src/expression.cpp
+++ b/c_compiler/src/expression.cpp
@@ -138,7 +138,12 @@ VariableStackBindings PostfixArrayElement::printAsm(VariableStackBindings bindin
{
stackPosition(bindings, label_count);
TypePtr type_ptr = postfix_expression_->getType(bindings);
- type_ptr->load();
+ std::shared_ptr<Pointer> pointer_type_ptr;
+ pointer_type_ptr = std::dynamic_pointer_cast<Pointer>(type_ptr);
+ if(pointer_type_ptr != nullptr)
+ pointer_type_ptr->pointerLoad();
+ else
+ type_ptr->load();
printf("\tsw\t$2,%d($fp)\n", bindings.currentExpressionStackPosition());
return bindings;
}