vk/image: Check extent does not exceed surface type limits
[mesa.git] / src / glsl / lower_if_to_cond_assign.cpp
index 7b89a1539cefa07df7a869a254deac7ac31277c9..3232ce92aab230ce9d4824dd3b3e9be96f90eebb 100644 (file)
@@ -49,6 +49,8 @@
 #include "ir.h"
 #include "program/hash_table.h"
 
+namespace {
+
 class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor {
 public:
    ir_if_to_cond_assign_visitor(unsigned max_depth)
@@ -76,9 +78,14 @@ public:
    struct hash_table *condition_variables;
 };
 
+} /* anonymous namespace */
+
 bool
 lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth)
 {
+   if (max_depth == UINT_MAX)
+      return false;
+
    ir_if_to_cond_assign_visitor v(max_depth);
 
    visit_list_elements(&v, instructions);
@@ -109,9 +116,7 @@ move_block_to_cond_assign(void *mem_ctx,
                          exec_list *instructions,
                          struct hash_table *ht)
 {
-   foreach_list_safe(node, instructions) {
-      ir_instruction *ir = (ir_instruction *) node;
-
+   foreach_in_list_safe(ir_instruction, ir, instructions) {
       if (ir->ir_type == ir_type_assignment) {
         ir_assignment *assign = (ir_assignment *)ir;
 
@@ -171,12 +176,10 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
    ir_assignment *assign;
 
    /* Check that both blocks don't contain anything we can't support. */
-   foreach_iter(exec_list_iterator, then_iter, ir->then_instructions) {
-      ir_instruction *then_ir = (ir_instruction *)then_iter.get();
+   foreach_in_list(ir_instruction, then_ir, &ir->then_instructions) {
       visit_tree(then_ir, check_control_flow, &found_control_flow);
    }
-   foreach_iter(exec_list_iterator, else_iter, ir->else_instructions) {
-      ir_instruction *else_ir = (ir_instruction *)else_iter.get();
+   foreach_in_list(ir_instruction, else_ir, &ir->else_instructions) {
       visit_tree(else_ir, check_control_flow, &found_control_flow);
    }
    if (found_control_flow)