From 44b45da994c5d827eb123fb18b501d712822baae Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Mon, 23 Feb 2015 22:00:34 -0800 Subject: [PATCH] glsl: Make ir_rvalue_visitor visit ir_discard::condition. This was forgotten. I omitted the NULL check since we don't check ir_assignment::condition either. Signed-off-by: Kenneth Graunke Reviewed-by: Ian Romanick Reviewed-by: Connor Abbott Reviewed-by: Matt Turner Reviewed-by: Eric Anholt --- src/glsl/ir_rvalue_visitor.cpp | 19 +++++++++++++++++++ src/glsl/ir_rvalue_visitor.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/src/glsl/ir_rvalue_visitor.cpp b/src/glsl/ir_rvalue_visitor.cpp index 34cdb1c98a0..2eee3da7b22 100644 --- a/src/glsl/ir_rvalue_visitor.cpp +++ b/src/glsl/ir_rvalue_visitor.cpp @@ -134,6 +134,13 @@ ir_rvalue_base_visitor::rvalue_visit(ir_call *ir) return visit_continue; } +ir_visitor_status +ir_rvalue_base_visitor::rvalue_visit(ir_discard *ir) +{ + handle_rvalue(&ir->condition); + return visit_continue; +} + ir_visitor_status ir_rvalue_base_visitor::rvalue_visit(ir_return *ir) { @@ -204,6 +211,12 @@ ir_rvalue_visitor::visit_leave(ir_call *ir) return rvalue_visit(ir); } +ir_visitor_status +ir_rvalue_visitor::visit_leave(ir_discard *ir) +{ + return rvalue_visit(ir); +} + ir_visitor_status ir_rvalue_visitor::visit_leave(ir_return *ir) { @@ -270,6 +283,12 @@ ir_rvalue_enter_visitor::visit_enter(ir_call *ir) return rvalue_visit(ir); } +ir_visitor_status +ir_rvalue_enter_visitor::visit_enter(ir_discard *ir) +{ + return rvalue_visit(ir); +} + ir_visitor_status ir_rvalue_enter_visitor::visit_enter(ir_return *ir) { diff --git a/src/glsl/ir_rvalue_visitor.h b/src/glsl/ir_rvalue_visitor.h index 04ec0fa398c..185c72a5ba1 100644 --- a/src/glsl/ir_rvalue_visitor.h +++ b/src/glsl/ir_rvalue_visitor.h @@ -36,6 +36,7 @@ public: ir_visitor_status rvalue_visit(ir_call *); ir_visitor_status rvalue_visit(ir_dereference_array *); ir_visitor_status rvalue_visit(ir_dereference_record *); + ir_visitor_status rvalue_visit(ir_discard *); ir_visitor_status rvalue_visit(ir_expression *); ir_visitor_status rvalue_visit(ir_if *); ir_visitor_status rvalue_visit(ir_return *); @@ -54,6 +55,7 @@ public: virtual ir_visitor_status visit_leave(ir_call *); virtual ir_visitor_status visit_leave(ir_dereference_array *); virtual ir_visitor_status visit_leave(ir_dereference_record *); + virtual ir_visitor_status visit_leave(ir_discard *); virtual ir_visitor_status visit_leave(ir_expression *); virtual ir_visitor_status visit_leave(ir_if *); virtual ir_visitor_status visit_leave(ir_return *); @@ -70,6 +72,7 @@ public: virtual ir_visitor_status visit_enter(ir_call *); virtual ir_visitor_status visit_enter(ir_dereference_array *); virtual ir_visitor_status visit_enter(ir_dereference_record *); + virtual ir_visitor_status visit_enter(ir_discard *); virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_if *); virtual ir_visitor_status visit_enter(ir_return *); -- 2.30.2