ir_to_mesa: Set up our instruction nodes with zeroed data.
authorEric Anholt <eric@anholt.net>
Mon, 30 Aug 2010 21:42:27 +0000 (14:42 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 31 Aug 2010 18:34:29 +0000 (11:34 -0700)
cond_update wasn't being set by emit_op3, leading to valgrind
complaints, and failures in several piglit tests when built with
clang.

src/mesa/program/ir_to_mesa.cpp

index 516c991855d8078c06d95b5e721b596823fd43d9..768c11e3bf6fc40c7f3b4ec3e06f34a3c563af67 100644 (file)
@@ -105,6 +105,18 @@ extern ir_to_mesa_src_reg ir_to_mesa_undef;
 
 class ir_to_mesa_instruction : public exec_node {
 public:
+   /* Callers of this talloc-based new need not call delete. It's
+    * easier to just talloc_free 'ctx' (or any of its ancestors). */
+   static void* operator new(size_t size, void *ctx)
+   {
+      void *node;
+
+      node = talloc_zero_size(ctx, size);
+      assert(node != NULL);
+
+      return node;
+   }
+
    enum prog_opcode op;
    ir_to_mesa_dst_reg dst_reg;
    ir_to_mesa_src_reg src_reg[3];