void DeclarationCombiner::apply(Stage &stage)
{
- visit(stage.content);
+ stage.content.visit(*this);
NodeRemover().apply(stage, nodes_to_remove);
}
{
bool found = false;
for(vector<Layout::Qualifier>::iterator j=ptr->layout->qualifiers.begin(); (!found && j!=ptr->layout->qualifiers.end()); ++j)
- if(j->identifier==i->identifier)
+ if(j->name==i->name)
{
+ j->has_value = i->value;
j->value = i->value;
found = true;
}
{
Stage *builtin_stage = get_builtins(stage.type);
builtins = (builtin_stage ? &builtin_stage->content : 0);
- visit(stage.content);
+ stage.content.visit(*this);
}
Block *VariableResolver::next_block(Block &block)
if(stage->previous)
in_prefix = get_out_prefix(stage->previous->type);
out_prefix = get_out_prefix(stage->type);
- visit(s.content);
+ s.content.visit(*this);
NodeRemover().apply(s, nodes_to_remove);
}
{
if(var.declaration || !stage->previous)
return;
+ /* Don't pull a variable from previous stage if we just generated an out
+ interface in this stage */
+ if(stage->out_variables.count(var.name))
+ return;
const map<string, VariableDeclaration *> &prev_out = stage->previous->out_variables;
map<string, VariableDeclaration *>::const_iterator i = prev_out.find(var.name);