From 3bcfafcf0320ee5407716ff67062e80d162760d4 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 27 Aug 2010 15:41:20 -0700 Subject: glsl2: Track the number of ir_loop_jump instructions that are in a loop --- src/glsl/loop_analysis.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/glsl/loop_analysis.cpp') diff --git a/src/glsl/loop_analysis.cpp b/src/glsl/loop_analysis.cpp index 2ea2f3dbe3..f1268c04c4 100644 --- a/src/glsl/loop_analysis.cpp +++ b/src/glsl/loop_analysis.cpp @@ -103,6 +103,7 @@ class loop_analysis : public ir_hierarchical_visitor { public: loop_analysis(); + virtual ir_visitor_status visit(ir_loop_jump *); virtual ir_visitor_status visit(ir_dereference_variable *); virtual ir_visitor_status visit_enter(ir_loop *); @@ -131,6 +132,22 @@ loop_analysis::loop_analysis() } +ir_visitor_status +loop_analysis::visit(ir_loop_jump *ir) +{ + (void) ir; + + assert(!this->state.is_empty()); + + loop_variable_state *const ls = + (loop_variable_state *) this->state.get_head(); + + ls->num_loop_jumps++; + + return visit_continue; +} + + ir_visitor_status loop_analysis::visit(ir_dereference_variable *ir) { -- cgit v1.2.3