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>()-1);
+ }
}
}
}
+
+set<VariableDeclaration *> AssignmentCollector::apply(Node &node)
+{
+ node.visit(*this);
+ return assigned_variables;
+}
+
+void AssignmentCollector::visit(Assignment &assign)
+{
+ if(VariableDeclaration *var = dynamic_cast<VariableDeclaration *>(assign.target.declaration))
+ assigned_variables.insert(var);
+}
+
} // namespace SL
} // namespace GL
} // namespace Msp