https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103905
Bug ID: 103905 Summary: [12 Regression] Miscompiled i386-expand.c with -march=bdver1 and -O3 since r12-1789-g836328b2c99f5b8d Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org, uros at gcc dot gnu.org Target Milestone: --- Created attachment 52119 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52119&action=edit test-case It's follow up of what I started tracking in PR92860. $ g++ /tmp/i386-expand.ii -march=bdver1 -O3 -c -Wno-narrowing is miscompiled so that the following test-case crashes when run with the miscompiled compiler: $ $ cat options-save2.ii char flags[16]; int one = 1, two = 2; void __attribute__ ((noipa)) save() { flags[0] = one; flags[1] = one; flags[2] = one; flags[3] = one; flags[4] = one; flags[5] = one; flags[6] = one; flags[7] = one; flags[8] = one; flags[9] = one; flags[10] = one; flags[11] = one; flags[12] = one; flags[13] = one; flags[14] = one; flags[15] = two; } int main() { save (); __builtin_printf ("flags[0]=%d, flags[15]=%d\n", flags[0], flags[15]); if (flags[15] != 2) __builtin_abort (); return 0; } One needs here -O2 -march=core2.