glsl: Fix handling of function calls inside nested loops.
[mesa.git] / src / glsl / ir_expression_flattening.cpp
index 7b1b8dbfef1a3d097a3c59df270ad6f20b6c150b..b44e68ca364cedf6ecedde9db039faa3162b7cc6 100644 (file)
  * Takes the leaves of expression trees and makes them dereferences of
  * assignments of the leaves to temporaries, according to a predicate.
  *
- * This is used for automatic function inlining, where we want to take
- * an expression containing a call and move the call out to its own
- * assignment so that we can inline it at the appropriate place in the
- * instruction stream.
+ * This is used for breaking down matrix operations, where it's easier to
+ * create a temporary and work on each of its vector components individually.
  */
 
 #include "ir.h"
@@ -78,7 +76,7 @@ ir_expression_flattening_visitor::handle_rvalue(ir_rvalue **rvalue)
    if (!ir || !this->predicate(ir))
       return;
 
-   void *ctx = talloc_parent(ir);
+   void *ctx = ralloc_parent(ir);
 
    var = new(ctx) ir_variable(ir->type, "flattening_tmp", ir_var_temporary);
    base_ir->insert_before(var);