Some valid shaders, such as 'precision highp float;', evaluate to
empty sets of instructions. This causes some of the optimization
stages to enter infinite loops. Instead, don't bother processing the
empty ones.
ast->print();
}
- _mesa_ast_to_hir(&instructions, &state);
+ if (!state.translation_unit.is_empty())
+ _mesa_ast_to_hir(&instructions, &state);
} else {
/* FINISHME: We should initialize this to the max GLSL version supported
* FINISHME: by the driver. At the moment, we don't know what that is.
}
/* Optimization passes */
- if (!state.error) {
+ if (!state.error && !instructions.is_empty()) {
bool progress;
do {
progress = false;