+ for(list<Stage>::iterator i=module.stages.begin(); i!=module.stages.end(); ++i)
+ i->content.visit(*this);
+
+ unsigned max_id = features.max_constant_id;
+ for(vector<VariableDeclaration *>::iterator i=auto_constants.begin(); i!=auto_constants.end(); ++i)
+ {
+ unsigned id = hash32((*i)->name)%(max_id+1);
+ while(used_ids.count(id))
+ ++id;
+
+ vector<Layout::Qualifier> &qualifiers = (*i)->layout->qualifiers;
+ for(vector<Layout::Qualifier>::iterator j=qualifiers.begin(); j!=qualifiers.end(); ++j)
+ if(j->name=="constant_id")
+ {
+ j->value = id;
+ break;
+ }
+
+ used_ids.insert(id);
+ }