https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106322
Bug ID: 106322
Summary: i386: Wrong code at O2 level (O0 / O1 are working)
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: malat at debian dot org
Target Milestone: ---
I can trigger an assertion in highway unit test suite on i386 when using -O2,
which does not happen neither at -O1 nor at -O0.
Symptoms:
% ./tests/mul_test
"--gtest_filter=HwyMulTestGroup/HwyMulTest.TestAllMulHigh/Emu128"
Running main() from ./googletest/src/gtest_main.cc
Note: Google Test filter = HwyMulTestGroup/HwyMulTest.TestAllMulHigh/Emu128
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from HwyMulTestGroup/HwyMulTest
[ RUN ] HwyMulTestGroup/HwyMulTest.TestAllMulHigh/Emu128
i16x8 expect [0+ ->]:
0x3FFF,0x0FFF,0x03FF,0x00FF,0x003F,0x000F,0x0003,
i16x8 actual [0+ ->]:
0xBFFF,0x0FFF,0xE400,0x00FF,0xF840,0x000F,0xFE04,
Abort at ./hwy/tests/mul_test.cc:131: Emu128, i16x8 lane 0 mismatch: expected
'0x3FFF', got '0xBFFF'.