Mesa (master): glsl: Skip processing the first function' s body in do_dead_functions().

Eric Anholt anholt at kemper.freedesktop.org
Tue Mar 15 17:23:04 UTC 2011


Module: Mesa
Branch: master
Commit: c75427f4c8767e131e5fb3de44fbc9d904cb992d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c75427f4c8767e131e5fb3de44fbc9d904cb992d

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Mar 11 14:08:48 2011 -0800

glsl: Skip processing the first function's body in do_dead_functions().

It can't call anything, so there's no point.

---

 src/glsl/opt_dead_functions.cpp |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/glsl/opt_dead_functions.cpp b/src/glsl/opt_dead_functions.cpp
index 51c77e3..7c64c61 100644
--- a/src/glsl/opt_dead_functions.cpp
+++ b/src/glsl/opt_dead_functions.cpp
@@ -50,6 +50,7 @@ public:
    ir_dead_functions_visitor()
    {
       this->mem_ctx = ralloc_context(NULL);
+      this->seen_another_function_signature = false;
    }
 
    ~ir_dead_functions_visitor()
@@ -64,6 +65,8 @@ public:
 
    bool (*predicate)(ir_instruction *ir);
 
+   bool seen_another_function_signature;
+
    /* List of signature_entry */
    exec_list signature_list;
    void *mem_ctx;
@@ -94,7 +97,13 @@ ir_dead_functions_visitor::visit_enter(ir_function_signature *ir)
       entry->used = true;
    }
 
-
+   /* If this is the first signature to look at, no need to descend to see
+    * if it has calls to another function signature.
+    */
+   if (!this->seen_another_function_signature) {
+      this->seen_another_function_signature = true;
+      return visit_continue_with_parent;
+   }
 
    return visit_continue;
 }




More information about the mesa-commit mailing list