https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96019
Bug ID: 96019 Summary: Optimization forgets non-default scalar_storage_order Product: gcc Version: 9.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: arthur200126 at gmail dot com Target Milestone: --- Created attachment 48818 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48818&action=edit test case The attached code uses a scalar_storage_order to access a byte field in big endian. On an x86-64 Windows system, the output without optimization, as expected, is "aabbccdd 1122". The output with optimization (Og) is "ddccbbaa 2211". The same happens on the https://gcc.godbolt.org/ site. With O0 a bswap can be found, but it is gone in -O1 and -Og. I was unable to find the responsible option by bisection on the godbolt instance, but that could just be a godbolt thing.