https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106187
--- Comment #8 from Mathieu Malaterre <mathieu.malaterre at gmail dot com> --- (In reply to Jan Wassenberg from comment #7) > The easiest way to reduce the amount of code in the binary is to comment out > from mul_test.cc all the HWY_EXPORT_AND_TEST_P except the one with > TestAllMulEven. > > The actual miscompilation is probably happening within ops/emu128-inl.h. > > You can further reduce instantiations by replacing > ForFloatTypes(ForPartialVectors<TestMulAdd>()); > with > TestMulAdd()(float(), FixedTag<float, 4>()); > > That gets us down to a fairly minimal single TU (mul_test.cc). Bingo ! Program received signal SIGABRT, Aborted. 0xb6cafe86 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6 (gdb) bt #0 0xb6cafe86 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6 #1 0xb6cbf0e4 in raise () from /lib/arm-linux-gnueabihf/libc.so.6 #2 0xb6cafa16 in abort () from /lib/arm-linux-gnueabihf/libc.so.6 #3 0x00416a2c in hwy::Abort (file=file@entry=0x43acf8 "/home/malat/highway/hwy/tests/mul_test.cc", line=line@entry=308, format=0x43b6ec "%s, %sx%llu lane %llu mismatch: expected '%s', got '%s'.\n") at /home/malat/highway/hwy/targets.cc:322 #4 0x00416cbc in hwy::detail::PrintMismatchAndAbort (info=..., expected_ptr=expected_ptr@entry=0x0, actual_ptr=0x467580, actual_ptr@entry=0x43acf8, target_name=target_name@entry=0x43ad24 "Emu128", filename=0x43acf8 "/home/malat/highway/hwy/tests/mul_test.cc", filename@entry=0xb6ff3010 "", line=line@entry=308, lane=0, num_lanes=num_lanes@entry=4) at /home/malat/highway/hwy/tests/test_util.cc:90 #5 0x00416d54 in hwy::detail::AssertArrayEqual (info=..., expected_void=expected_void@entry=0x467500, actual_void=actual_void@entry=0x467580, N=N@entry=4, target_name=0x43ad24 "Emu128", filename=0x43acf8 "/home/malat/highway/hwy/tests/mul_test.cc", line=308) at /home/malat/highway/hwy/tests/test_util.cc:113 #6 0x004108ae in hwy::N_EMU128::AssertVecEqual<hwy::N_EMU128::Simd<float, 4u, 0>, float, hwy::N_EMU128::Vec128<float, 4u> > (line=308, filename=0x43acf8 "/home/malat/highway/hwy/tests/mul_test.cc", actual=..., expected=0x467500, d=...) at /home/malat/highway/hwy/tests/test_util-inl.h:51 #7 hwy::N_EMU128::TestMulAdd::operator()<float, hwy::N_EMU128::Simd<float, 4u, 0> > (d=..., this=<optimized out>) at /home/malat/highway/hwy/tests/mul_test.cc:308 #8 0x0043a114 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) ()