From 15d162d7b1ebe09b0bdaf43194529f9ef995c623 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 7 Jun 2010 18:53:06 -0700 Subject: [PATCH] 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. --- glsl_parser_extras.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; -- 2.30.2