glsl: Make ir_validate check the type of ir_discard::condition.
Copy and pasted from the ir_if::condition handling, plus a NULL check. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
6f5604601c
commit
926d8b0510
|
@ -61,6 +61,7 @@ public:
|
||||||
virtual ir_visitor_status visit(ir_variable *v);
|
virtual ir_visitor_status visit(ir_variable *v);
|
||||||
virtual ir_visitor_status visit(ir_dereference_variable *ir);
|
virtual ir_visitor_status visit(ir_dereference_variable *ir);
|
||||||
|
|
||||||
|
virtual ir_visitor_status visit_enter(ir_discard *ir);
|
||||||
virtual ir_visitor_status visit_enter(ir_if *ir);
|
virtual ir_visitor_status visit_enter(ir_if *ir);
|
||||||
|
|
||||||
virtual ir_visitor_status visit_enter(ir_function *ir);
|
virtual ir_visitor_status visit_enter(ir_function *ir);
|
||||||
|
@ -132,6 +133,20 @@ ir_validate::visit_enter(class ir_dereference_array *ir)
|
||||||
return visit_continue;
|
return visit_continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ir_visitor_status
|
||||||
|
ir_validate::visit_enter(ir_discard *ir)
|
||||||
|
{
|
||||||
|
if (ir->condition && ir->condition->type != glsl_type::bool_type) {
|
||||||
|
printf("ir_discard condition %s type instead of bool.\n",
|
||||||
|
ir->condition->type->name);
|
||||||
|
ir->print();
|
||||||
|
printf("\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
return visit_continue;
|
||||||
|
}
|
||||||
|
|
||||||
ir_visitor_status
|
ir_visitor_status
|
||||||
ir_validate::visit_enter(ir_if *ir)
|
ir_validate::visit_enter(ir_if *ir)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue