mesa/program: Change the program parser's namespace.
[mesa.git] / src / glsl / loop_controls.cpp
index 9619d8ae55540fb2e8e5e081e7915972335e4676..79c820436fd6951a0643d9fa1189b83b59136b90 100644 (file)
@@ -21,7 +21,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#include <climits>
+#include <limits.h>
 #include "main/compiler.h"
 #include "glsl_types.h"
 #include "loop_analysis.h"
@@ -85,7 +85,10 @@ int
 calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
                     enum ir_expression_operation op)
 {
-   void *mem_ctx = talloc_init(__func__);
+   if (from == NULL || to == NULL || increment == NULL)
+      return -1;
+
+   void *mem_ctx = ralloc_context(NULL);
 
    ir_expression *const sub =
       new(mem_ctx) ir_expression(ir_binop_sub, from->type, to, from);
@@ -144,7 +147,7 @@ calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
       }
    }
 
-   talloc_free(mem_ctx);
+   ralloc_free(mem_ctx);
    return (valid_loop) ? iter_value : -1;
 }
 
@@ -219,10 +222,10 @@ loop_control_visitor::visit_leave(ir_loop *ir)
            limit = cond->operands[0]->as_constant();
 
            switch (cmp) {
-           case ir_binop_less:    cmp = ir_binop_gequal;  break;
-           case ir_binop_greater: cmp = ir_binop_lequal;  break;
-           case ir_binop_lequal:  cmp = ir_binop_greater; break;
-           case ir_binop_gequal:  cmp = ir_binop_less;    break;
+           case ir_binop_less:    cmp = ir_binop_greater; break;
+           case ir_binop_greater: cmp = ir_binop_less;    break;
+           case ir_binop_lequal:  cmp = ir_binop_gequal;  break;
+           case ir_binop_gequal:  cmp = ir_binop_lequal;  break;
            default: assert(!"Should not get here.");
            }
         }