https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120089
Bug ID: 120089 Summary: GCC miscompiles VK-GL-CTS on aarch64 with -O3 Product: gcc Version: 15.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: cwabbott0 at gmail dot com Target Milestone: --- Created attachment 61286 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61286&action=edit reproducer Since I upgraded to Fedora 42 with GCC 15.1.1, when using -O3 (which is the default CMake configuration in a release build) GCC miscompiles a function in https://github.com/KhronosGroup/VK-GL-CTS which results in some Vulkan tests failing. I've built GCC trunk as of today and it also fails. I've attached a self-contained reproducer, here's a godbolt link too: https://godbolt.org/z/arjr31dd1 note that running programs on godbolt compiled with GCC 15 on aarch64 seems to be broken (even hello world segfaults) so you can't reproduce the bug on godbolt. However it does show that x86-64 is unaffected so the bug may be target-specific. The correct output, as seen with -O2, is: 0 0 0 0 0 0 0 0 0 0 64 191 0 0 96 191 0 0 96 191 0 0 32 191 0 0 32 191 0 0 32 191 0 0 128 190 0 0 96 191 0 0 192 190 0 0 32 191 0 0 0 190 0 0 32 191 0 0 128 62 0 0 96 191 0 0 0 62 0 0 32 191 0 0 192 62 0 0 32 191 0 0 64 63 0 0 96 191 0 0 32 63 0 0 32 191 0 0 96 63 0 0 32 191 0 0 64 191 0 0 192 190 0 0 96 191 0 0 0 190 0 0 32 191 0 0 0 190 0 0 128 190 0 0 192 190 0 0 192 190 0 0 0 190 0 0 0 190 0 0 0 190 0 0 128 62 0 0 192 190 0 0 0 62 0 0 0 190 0 0 192 62 0 0 0 190 0 0 64 63 0 0 192 190 0 0 32 63 0 0 0 190 0 0 96 63 0 0 0 190 0 0 64 191 0 0 0 62 0 0 96 191 0 0 192 62 0 0 32 191 0 0 192 62 0 0 128 190 0 0 0 62 0 0 192 190 0 0 192 62 0 0 0 190 0 0 192 62 0 0 128 62 0 0 0 62 0 0 0 62 0 0 192 62 0 0 192 62 0 0 192 62 0 0 64 63 0 0 0 62 0 0 32 63 0 0 192 62 0 0 96 63 0 0 192 62 0 0 64 191 0 0 32 63 0 0 96 191 0 0 96 63 0 0 32 191 0 0 96 63 0 0 128 190 0 0 32 63 0 0 192 190 0 0 96 63 0 0 0 190 0 0 96 63 0 0 128 62 0 0 32 63 0 0 0 62 0 0 96 63 0 0 192 62 0 0 96 63 0 0 64 63 0 0 32 63 0 0 32 63 0 0 96 63 0 0 96 63 0 0 96 63 but when miscompiled it outputs: 0 0 0 0 0 0 0 0 0 0 64 191 0 0 96 191 0 0 96 191 0 0 32 191 0 0 32 191 0 0 32 191 0 0 128 190 0 0 96 191 0 0 192 190 0 0 32 191 0 0 0 190 0 0 32 191 0 0 128 62 0 0 96 191 0 0 0 62 0 0 32 191 0 0 192 62 0 0 32 191 0 0 64 63 0 0 96 191 0 0 32 63 0 0 32 191 0 0 192 62 0 0 96 63 0 0 64 63 0 0 32 63 0 0 32 63 0 0 96 63 0 0 96 63 0 0 96 63 0 0 128 190 0 0 192 190 0 0 192 190 0 0 0 190 0 0 0 190 0 0 0 190 0 0 128 62 0 0 192 190 0 0 0 62 0 0 0 190 0 0 192 62 0 0 0 190 0 0 64 63 0 0 192 190 0 0 32 63 0 0 0 190 0 0 96 63 0 0 0 190 0 0 64 191 0 0 0 62 0 0 96 191 0 0 192 62 0 0 32 191 0 0 192 62 0 0 128 190 0 0 0 62 0 0 192 190 0 0 192 62 0 0 0 190 0 0 192 62 0 0 128 62 0 0 0 62 0 0 0 62 0 0 192 62 0 0 192 62 0 0 192 62 0 0 64 63 0 0 0 62 0 0 32 63 0 0 192 62 0 0 96 63 0 0 192 62 0 0 64 191 0 0 32 63 0 0 96 191 0 0 96 63 0 0 32 191 0 0 96 63 0 0 128 190 0 0 32 63 0 0 192 190 0 0 96 63 0 0 0 190 0 0 96 63 0 0 128 62 0 0 32 63 0 0 0 62 0 0 96 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 with the last few bytes being replaced with 0's. The reproducer is based on https://github.com/KhronosGroup/VK-GL-CTS/blob/b2b40c06daf915417234ebbe64b2ec7580a2c1be/external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAttributeOffsetTests.cpp#L178 with inputs taken from one of the failing tests.