throw invalid_shader_source(get_diagnostics());
unsigned n = 0;
- for(list<Stage>::iterator i=module->stages.begin(); (i!=module->stages.end() && n<10000); ++n)
+ for(list<Stage>::iterator i=module->stages.begin(); i!=module->stages.end(); ++n)
{
OptimizeResult result = optimize(*i);
if(result==REDO_PREVIOUS)
InterfaceGenerator().apply(stage);
TypeResolver().apply(stage);
VariableResolver().apply(stage);
+ ExpressionResolver().apply(stage);
FunctionResolver().apply(stage);
ConstantSpecializer().apply(stage, (mode==PROGRAM && specialized ? &spec_values : 0));
TypeValidator().apply(stage);
DeclarationValidator().apply(stage);
ReferenceValidator().apply(stage);
+ ExpressionValidator().apply(stage);
for(vector<Diagnostic>::const_iterator i=stage.diagnostics.begin(); i!=stage.diagnostics.end(); ++i)
if(i->severity==Diagnostic::ERR)
TypeResolver().apply(stage);
VariableResolver().apply(stage);
FunctionResolver().apply(stage);
+ ExpressionResolver().apply(stage);
}
/* Removing variables or functions may cause things from the previous stage