[Bug c/108439] New: incorrect optimization with -O2, -O3, -Os
georgmueller at gmx dot net
gcc-bugzilla@gcc.gnu.org
Tue Jan 17 21:17:29 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108439
Bug ID: 108439
Summary: incorrect optimization with -O2, -O3, -Os
Product: gcc
Version: 12.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: georgmueller at gmx dot net
Target Milestone: ---
Created attachment 54292
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54292&action=edit
test case to trigger bug
When testing the crap8 (or crapwow) hashing funtion, we discovered a gcc
optimization problem with gcc from at least version 9.3.0 up to 12.2.1.
The attached program (t_crap8.c) miscompiles for -O2, -O3, -Os while testing
the crap8 hash function (same behavior with similar hash function crapwow,
which only has different parameters m and n in the hash function).
Implementation is, for example. available in the smhasher project.
The line "lb_key[0] = 0x1234;" gets ignored with -O2, -O3, -Os.
As described in the report, compiling with -fno-strict-aliasing solves the
problem, but the code is compiling correctly with clang at all optimization
levels and does not report an error.
More information about the Gcc-bugs
mailing list