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.roman...@intel.com> Cc: Eric Anholt <e...@anholt.net> Cc: tha...@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; -private: - /** Loop containing this break instruction. */ - ir_loop *loop; }; /** -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev