}
r_size = total;
r_alignment = max_align;
+ r_size += r_alignment-1;
+ r_size -= r_size%r_alignment;
}
void MemoryRequirementsCalculator::visit(VariableDeclaration &var)
if(var.array)
if(const Literal *literal = dynamic_cast<const Literal *>(var.array_size.get()))
if(literal->value.check_type<int>())
- r_size += r_alignment*(literal->value.value<int>()-1);
+ {
+ unsigned aligned_size = r_size+r_alignment-1;
+ aligned_size -= aligned_size%r_alignment;
+ r_size = aligned_size*literal->value.value<int>();
+ }
}