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'.