- string interface = i->first->interface;
- bool linked = i->first->linked_declaration;
- map<VariableDeclaration *, Node *>::iterator j = aggregates.find(i->first);
- if(j!=aggregates.end())
- if(InterfaceBlock *iface = dynamic_cast<InterfaceBlock *>(j->second))
- {
- interface = iface->interface;
- linked = iface->linked_block;
- }
-
- /* Don't remove output variables which are used by the next stage or the
- graphics API. */
- if(interface=="out" && (stage.type==Stage::FRAGMENT || linked || !i->first->name.compare(0, 3, "gl_")))
+ if(i->first.declaration!=prev_decl)
+ {
+ prev_decl = i->first.declaration;
+ output = i->second.output;
+ }
+ if(output)
+ {
+ if(!i->second.assignments.empty() && i->second.interface_block)
+ used_interface_blocks.insert(i->second.interface_block);