aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/declaration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/src/declaration.cpp')
-rw-r--r--c_compiler/src/declaration.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/c_compiler/src/declaration.cpp b/c_compiler/src/declaration.cpp
index 149bdab..0865619 100644
--- a/c_compiler/src/declaration.cpp
+++ b/c_compiler/src/declaration.cpp
@@ -3,6 +3,7 @@
#include "type.hpp"
#include "expression.hpp"
+#include <algorithm>
#include <cstdio>
#include <memory>
#include <vector>
@@ -214,8 +215,10 @@ Bindings ArrayDeclaration::localAsm(Bindings bindings, int &label_count) const
std::shared_ptr<Initializer> initializer;
initializer = std::static_pointer_cast<Initializer>(initializer_);
initializer->printInitializerAsm(bindings, label_count, array_sizes.size()-1, array_sizes, type_->type());
-
- bindings.insertBinding(getId(), type_, stack_position);
+
+ // reverse vector to store in binding
+ std::reverse(array_sizes.begin(), array_sizes.end());
+ bindings.insertBinding(getId(), type_, stack_position, array_sizes);
}
return bindings;