diff options
author | Eric Anholt <eric@anholt.net> | 2010-05-05 11:45:30 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-05-05 11:47:33 -0700 |
commit | bdd9b1f3ffa2a195d983816adfeca20480256119 (patch) | |
tree | 09cfda2b66313b75f58c37d4d45c5f4404c14421 /ir_constant_folding.cpp | |
parent | 6255a1f4c6425aa311c90e9dc7fca41c34e8dc2b (diff) |
Move optimization pass prototypes to a single header.
Diffstat (limited to 'ir_constant_folding.cpp')
-rw-r--r-- | ir_constant_folding.cpp | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/ir_constant_folding.cpp b/ir_constant_folding.cpp index 1b53440669..913d42f0d9 100644 --- a/ir_constant_folding.cpp +++ b/ir_constant_folding.cpp @@ -29,13 +29,49 @@ #define NULL 0 #include "ir.h" #include "ir_visitor.h" -#include "ir_constant_folding.h" +#include "ir_optimization.h" #include "glsl_types.h" /** * Visitor class for replacing expressions with ir_constant values. */ +class ir_constant_folding_visitor : public ir_visitor { +public: + ir_constant_folding_visitor() + { + /* empty */ + } + + virtual ~ir_constant_folding_visitor() + { + /* empty */ + } + + /** + * \name Visit methods + * + * As typical for the visitor pattern, there must be one \c visit method for + * each concrete subclass of \c ir_instruction. Virtual base classes within + * the hierarchy should not have \c visit methods. + */ + /*@{*/ + virtual void visit(ir_variable *); + virtual void visit(ir_function_signature *); + virtual void visit(ir_function *); + virtual void visit(ir_expression *); + virtual void visit(ir_swizzle *); + virtual void visit(ir_dereference *); + virtual void visit(ir_assignment *); + virtual void visit(ir_constant *); + virtual void visit(ir_call *); + virtual void visit(ir_return *); + virtual void visit(ir_if *); + virtual void visit(ir_loop *); + virtual void visit(ir_loop_jump *); + /*@}*/ +}; + void ir_constant_folding_visitor::visit(ir_variable *ir) { @@ -152,3 +188,14 @@ ir_constant_folding_visitor::visit(ir_loop_jump *ir) { (void) ir; } + +bool +do_constant_folding(exec_list *instructions) +{ + ir_constant_folding_visitor constant_folding; + + visit_exec_list(instructions, &constant_folding); + + /* FINISHME: Return real progress. */ + return false; +} |