[Mesa-dev] [PATCH] glsl: Remove unused ir_loop_jump::loop pointer.

Kenneth Graunke kenneth at whitecape.org
Sun Jul 1 16:33:30 PDT 2012

Commit 0c005bd7 intended to make ir_loop_jump::mode public, but also
accidentally added a new pointer to the enclosing loop.  Furthermore, it
tried to initialize the new field by adding "this->loop = loop;" to the
constructor, but since there is no loop parameter, this only initialized
the field to itself---so it will likely be a garbage pointer.

A lot of code, such as lower_jumps, allocates new loop jumps without
setting this field appropriately, so any uses would probably just crash.

Thankfully, there were none, so we can just delete the field.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51574
Cc: Ian Romanick <ian.d.romanick at intel.com>
Cc: Eric Anholt <eric at anholt.net>
Cc: thakis at chromium.org
 src/glsl/ir.h |    4 ----
 1 file changed, 4 deletions(-)

NAK on Ian's patch.  I'd rather just eliminate the garbage pointer; if we
want a pointer to the containing loop, we can go ahead and add that properly
in the future.

This patch replaces it.

diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 014f363..992c654 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -1245,7 +1245,6 @@ public:
       this->ir_type = ir_type_loop_jump;
       this->mode = mode;
-      this->loop = loop;
    virtual ir_loop_jump *clone(void *mem_ctx, struct hash_table *) const;
@@ -1269,9 +1268,6 @@ public:
    /** Mode selector for the jump instruction. */
    enum jump_mode mode;
-   /** Loop containing this break instruction. */
-   ir_loop *loop;

More information about the mesa-dev mailing list