On Sun, Apr 07, 2024 at 08:42:12PM -0400, Tom Lane wrote: > Today's Coverity run produced this warning, which seemingly was > triggered by one of these commits, but I can't make much sense > of it: > > *** CID 1596255: Uninitialized variables (UNINIT) > /usr/lib/gcc/x86_64-linux-gnu/10/include/avxintrin.h: 1218 in > _mm256_undefined_si256() > 1214 extern __inline __m256i __attribute__((__gnu_inline__, > __always_inline__, __artificial__)) > 1215 _mm256_undefined_si256 (void) > 1216 { > 1217 __m256i __Y = __Y; >>>> CID 1596255: Uninitialized variables (UNINIT) >>>> Using uninitialized value "__Y". > 1218 return __Y; > 1219 } > > I see the same code in my local copy of avxintrin.h, > and I quite agree that it looks like either an undefined > value or something that properly ought to be an error. > If we are calling this, why (and from where)?
Nothing in these commits uses this, or even uses the 256-bit registers. avxintrin.h is included by immintrin.h, which is probably why this is showing up. I believe you're supposed to use immintrin.h for the intrinsics used in these commits, so I don't immediately see a great way to avoid this. The Intel documentation for _mm256_undefined_si256() [0] indicates that it is intended to return "undefined elements," so it seems like the use of an uninitialized variable might be intentional. > Anyway, we can certainly just dismiss this warning if it > doesn't correspond to any real problem in our code. > But I thought I'd raise the question. That's probably the right thing to do, unless there's some action we can take to suppress this warning. [0] https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_undefined_si256&ig_expand=6943 -- Nathan Bossart Amazon Web Services: https://aws.amazon.com