diff options
| author | Eric Anholt <eric@anholt.net> | 2010-07-29 14:36:59 -0700 | 
|---|---|---|
| committer | Eric Anholt <eric@anholt.net> | 2010-07-29 14:38:04 -0700 | 
| commit | bf496862be1ba863285aa2c1a2262b2d764c3e53 (patch) | |
| tree | 7fe064181d6fafef457f9019dd86fec1a8546e8f /src | |
| parent | 9a8eb684d4cd602b6c5e6876cd1eceabc3a8896c (diff) | |
glsl2: When dumping IR for debug, indent nested blocks.
No more trying to match parens in my head when looking at the body of
a short function containing an if statement.
Diffstat (limited to 'src')
| -rw-r--r-- | src/glsl/ir_print_visitor.cpp | 53 | ||||
| -rw-r--r-- | src/glsl/ir_print_visitor.h | 7 | 
2 files changed, 54 insertions, 6 deletions
diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp index 88a0a6f0c8..7df9d8adcd 100644 --- a/src/glsl/ir_print_visitor.cpp +++ b/src/glsl/ir_print_visitor.cpp @@ -65,6 +65,13 @@ _mesa_print_ir(exec_list *instructions,     printf("\n)");  } + +void ir_print_visitor::indent(void) +{ +   for (int i = 0; i < indentation; i++) +      printf("  "); +} +  static void  print_type(const glsl_type *t)  { @@ -102,23 +109,43 @@ void ir_print_visitor::visit(ir_variable *ir)  void ir_print_visitor::visit(ir_function_signature *ir)  {     printf("(signature "); +   indentation++; +     print_type(ir->return_type); -   printf("\n  (parameters\n"); +   printf("\n"); +   indent(); + +   printf("(parameters\n"); +   indentation++; +     foreach_iter(exec_list_iterator, iter, ir->parameters) {        ir_variable *const inst = (ir_variable *) iter.get(); +      indent();        inst->accept(this);        printf("\n");     } -   printf("  )\n("); +   indentation--; + +   indent(); +   printf(")\n"); + +   indent(); + +   printf("(\n"); +   indentation++;     foreach_iter(exec_list_iterator, iter, ir->body) {        ir_instruction *const inst = (ir_instruction *) iter.get(); +      indent();        inst->accept(this);        printf("\n");     } +   indentation--; +   indent();     printf("))\n"); +   indentation--;  } @@ -135,13 +162,16 @@ void ir_print_visitor::visit(ir_function *ir)        return;     printf("(function %s\n", ir->name); +   indentation++;     foreach_iter(exec_list_iterator, iter, *ir) {        ir_function_signature *const sig = (ir_function_signature *) iter.get(); +      indent();        sig->accept(this);        printf("\n");     } - +   indentation--; +   indent();     printf(")\n\n");  } @@ -352,21 +382,33 @@ ir_print_visitor::visit(ir_if *ir)     ir->condition->accept(this);     printf("(\n"); +   indentation++; +     foreach_iter(exec_list_iterator, iter, ir->then_instructions) {        ir_instruction *const inst = (ir_instruction *) iter.get(); +      indent();        inst->accept(this);        printf("\n");     } + +   indentation--; +   indent();     printf(")\n"); +   indent();     printf("(\n"); +   indentation++; +     foreach_iter(exec_list_iterator, iter, ir->else_instructions) {        ir_instruction *const inst = (ir_instruction *) iter.get(); +      indent();        inst->accept(this);        printf("\n");     } +   indentation--; +   indent();     printf("))\n");  } @@ -387,12 +429,17 @@ ir_print_visitor::visit(ir_loop *ir)     if (ir->increment != NULL)        ir->increment->accept(this);     printf(") (\n"); +   indentation++; +     foreach_iter(exec_list_iterator, iter, ir->body_instructions) {        ir_instruction *const inst = (ir_instruction *) iter.get(); +      indent();        inst->accept(this);        printf("\n");     } +   indentation--; +   indent();     printf("))\n");  } diff --git a/src/glsl/ir_print_visitor.h b/src/glsl/ir_print_visitor.h index 3db42e24ca..4feeb8c184 100644 --- a/src/glsl/ir_print_visitor.h +++ b/src/glsl/ir_print_visitor.h @@ -38,9 +38,8 @@ extern void _mesa_print_ir(exec_list *instructions,  class ir_print_visitor : public ir_visitor {  public:     ir_print_visitor() -      : deref_depth(0)     { -      /* empty */ +      indentation = 0;     }     virtual ~ir_print_visitor() @@ -48,6 +47,8 @@ public:        /* empty */     } +   void indent(void); +     /**      * \name Visit methods      * @@ -76,7 +77,7 @@ public:     /*@}*/  private: -   int deref_depth; +   int indentation;  };  #endif /* IR_PRINT_VISITOR_H */  | 
