https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111591
--- Comment #32 from Kewen Lin <linkw at gcc dot gnu.org> --- > case pass, but the original test case (#c1) can't pass with this, it can't > pass with -fstack-reuse=none + -fno-strict-aliasing + -O2 either, I think > the original case still suffers another latent bug. Well, I spent some time to narrow down the remaining issue on #c1 and found the test case reduction generated unexpected test source (uninitialized array which is used for assert comparison), it locates at below lines 438 to line 439: 428 struct TestSatWidenMulPairwiseAdd { 429 template <typename TN, class DN> void operator()(TN, DN dn) { 430 using TN_U = MakeUnsigned<TN>; 431 using TW = MakeWide<TN>; 432 RepartitionToWide<DN> dw; 433 using VW = Vec<decltype(dw)>; 434 using VN = Vec<decltype(dn)>; 435 size_t NN = Lanes(dn), NW = Lanes(dw), kMaxLanesPerNBlock = sizeof(TN), 436 kMaxLanesPerWBlock = sizeof(TW); 437 RebindToUnsigned<decltype(dn)> dn_u; 438 VW f0; 439 VN nf0, nf1 = Set(dn, TN{}); 440 AssertVecEqual(dw, f0, SatWidenMulPairwiseAdd(dw, BitCast(dn_u, nf0), nf0), 441 "", 0); The expected result is f0 while the one used for the following SatWidenMulPairwiseAdd computation is nf0, both are not initialized. I'd expect they are initialized, like: VW f0 = Set(dw, TW{}); VN nf0 = Set(dn, TN{}); So IMHO #c1 test case is problematic, hi @Mathieu, could you have a double check?