On Wed, Nov 25, 2015 at 2:48 PM, Matt Turner <matts...@gmail.com> wrote: > The code seems fine to me. Here's what I see: > > We start with remaining_channels = WRITEMASK_XYZW. We initialize an > element of imm[] for each enabled bit of inst->dst.writemask, and then > we disable those bits from remaining_channels. When remaining_channels > is zero (should be if and only if all elements of imm[] are > initialized), we read imm[]. > > Do you see anything wrong or anything I've missed? > > FWIW, Clang does not warn about this and doesn't warn if I remove the > useless initializations of remaining_channels = 0 and inst_count = 0. > I think this is gcc and Coverity just being stupid.
The attached file reproduces what I'm claiming is a gcc deficiency. gcc-4.9.3 and gcc-5.2.0 will warn about data0 being uninitialized when using -Wall. Clang does not. I'll file a gcc bug.
#define X (1 << 0) void bar(unsigned data); void foo(unsigned writemask, unsigned data) { unsigned remaining = X; unsigned data0; if (writemask & X) data0 = data; remaining &= ~writemask; if (remaining == 0) //if (writemask & X) bar(data0); }
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev