From: Ian Romanick Date: Tue, 8 Jun 2010 01:53:06 +0000 (-0700) Subject: Don't process empty shaders X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=15d162d7b1ebe09b0bdaf43194529f9ef995c623;p=mesa.git Don't process empty shaders 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. --- diff --git a/glsl_parser_extras.cpp b/glsl_parser_extras.cpp index afce9d9c348..f6b30289ce3 100644 --- a/glsl_parser_extras.cpp +++ b/glsl_parser_extras.cpp @@ -737,7 +737,8 @@ main(int argc, char **argv) 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. @@ -748,7 +749,7 @@ main(int argc, char **argv) } /* Optimization passes */ - if (!state.error) { + if (!state.error && !instructions.is_empty()) { bool progress; do { progress = false;