Excerpts from Andreas Schwab's message of Juni 29, 2022 12:09 pm: > make[3]: Entering directory '/opt/gcc/gcc-20220629/Build/gcc' > /opt/gcc/gcc-20220629/Build/./prev-gcc/xg++ > -B/opt/gcc/gcc-20220629/Build/./prev-gcc/ -B/usr/aarch64-suse-linux/bin/ > -nostdinc++ > -B/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/src/.libs > -B/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/libsupc++/.libs > > -I/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/include/aarch64-suse-linux > -I/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/include > -I/opt/gcc/gcc-20220629/libstdc++-v3/libsupc++ > -L/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/src/.libs > -L/opt/gcc/gcc-20220629/Build/prev-aarch64-suse-linux/libstdc++-v3/libsupc++/.libs > -fno-PIE -c -DIN_GCC_FRONTEND -g -O2 -fno-checking -gtoggle -DIN_GCC > -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall > -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute > -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros > -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -Id > -I../../gcc -I../../gcc/d -I../../gcc/../include > -I../../gcc/../libcpp/include -I../../gcc/../libcody > -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber > -I../../gcc/../libbacktrace -o d/intrinsics.o -MT d/intrinsics.o -MMD -MP > -MF d/.deps/intrinsics.TPo ../../gcc/d/intrinsics.cc > ../../gcc/d/intrinsics.cc: In function 'tree_node* > build_shuffle_mask_type(tree)': > ../../gcc/d/intrinsics.cc:279:42: error: 'nunits' may be used uninitialized > [-Werror=maybe-uninitialized] > 279 | return build_ctype (TypeVector::create (t->sarrayOf (nunits))); > | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ > ../../gcc/d/intrinsics.cc:276:26: note: 'nunits' was declared here > 276 | unsigned HOST_WIDE_INT nunits; > | ^~~~~~ > In file included from ../../gcc/d/intrinsics.cc:19: > ../../gcc/system.h: In function 'tree_node* > expand_intrinsic_vec_shufflevector(tree)': > ../../gcc/system.h:396:29: error: 'v1elems' may be used uninitialized > [-Werror=maybe-uninitialized] > 396 | #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) > | ^ > ../../gcc/d/intrinsics.cc:1193:35: note: 'v1elems' was declared here > 1193 | unsigned HOST_WIDE_INT v0elems, v1elems; > | ^~~~~~~ > ../../gcc/d/intrinsics.cc:1193:26: error: 'v0elems' may be used uninitialized > [-Werror=maybe-uninitialized] > 1193 | unsigned HOST_WIDE_INT v0elems, v1elems; > | ^~~~~~~ > cc1plus: all warnings being treated as errors > make[3]: *** [Makefile:1146: d/intrinsics.o] Error 1 > make[3]: Leaving directory '/opt/gcc/gcc-20220629/Build/gcc' >
Hi Andreas, That's unfortunate, though curious why I am not seeing this on x86. Does the error goes away if you wrap that around gcc_assert? As I am already checking this a lot earlier before expansion, perhaps it would be better to use to_constant(). Regards, Iain.