X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fir_hierarchical_visitor.h;h=647d2e002e522f4eb9c02b468fcdd88c9080aa3b;hb=b8d7a97fade140b8fb7c464afc24b210f1fe4ff7;hp=afa780dc91211b19b34ad08fe0a897bba2b031a9;hpb=443a7e4e9a360acbc3e662c098be436f180bf81d;p=mesa.git diff --git a/src/glsl/ir_hierarchical_visitor.h b/src/glsl/ir_hierarchical_visitor.h index afa780dc912..647d2e002e5 100644 --- a/src/glsl/ir_hierarchical_visitor.h +++ b/src/glsl/ir_hierarchical_visitor.h @@ -36,6 +36,7 @@ enum ir_visitor_status { }; +#ifdef __cplusplus /** * Base class of hierarchical visitors of IR instruction trees * @@ -82,9 +83,12 @@ public: * \name Visit methods for leaf-node classes */ /*@{*/ + virtual ir_visitor_status visit(class ir_rvalue *); virtual ir_visitor_status visit(class ir_variable *); virtual ir_visitor_status visit(class ir_constant *); virtual ir_visitor_status visit(class ir_loop_jump *); + virtual ir_visitor_status visit(class ir_emit_vertex *); + virtual ir_visitor_status visit(class ir_end_primitive *); /** * ir_dereference_variable isn't technically a leaf, but it is treated as a @@ -165,12 +169,21 @@ public: * Extra data parameter passed to the per-node callback function */ void *data; + + /** + * Currently in the LHS of an assignment? + * + * This is set and cleared by the \c ir_assignment::accept method. + */ + bool in_assignee; }; void visit_tree(ir_instruction *ir, void (*callback)(class ir_instruction *ir, void *data), void *data); -ir_visitor_status visit_list_elements(ir_hierarchical_visitor *v, exec_list *l); +ir_visitor_status visit_list_elements(ir_hierarchical_visitor *v, exec_list *l, + bool statement_list = true); +#endif /* __cplusplus */ #endif /* IR_HIERARCHICAL_VISITOR_H */