https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111088
Bug ID: 111088 Summary: useless 'xor eax,eax' inserted when a value is not returned. Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: charly.poyac at gmail dot com Target Milestone: --- I compile this simple C code with GCC 13.2: int foo(int *a) { *a += 1; } int foo2(int *a) { *a += 1; } and it produces the following assembly code with '-O3': foo: add DWORD PTR [rdi], 1 ret foo2: add DWORD PTR [rdi], 1 xor eax, eax ret see godbolt: https://godbolt.org/z/eeT63ePcr We can see the inconsistency between the two functions with the 'xor eax,eax' added in foo2. This does not happen if I compile with -O1. Yes, these functions should return an integer, but they don't. However, this is allowed by the C standard (2018 6.9.1 11/12).