aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/declaration.cpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-28 12:39:37 +0100
committerYann Herklotz <ymherklotz@gmail.com>2017-03-28 12:39:37 +0100
commit915c49f93d9a4120dc89872f609824603b9310bb (patch)
treeb61dc26c14415f6677025b404ac51e66484722db /c_compiler/src/declaration.cpp
parentc15bba765558e1017ef68f6d319141d4fb0b71fd (diff)
downloadCompiler-915c49f93d9a4120dc89872f609824603b9310bb.tar.gz
Compiler-915c49f93d9a4120dc89872f609824603b9310bb.zip
Multidimensional array working
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;