https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100858
Bug ID: 100858 Summary: Simple common code hoisting is not performed Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: nok.raven at gmail dot com Target Milestone: --- void bar(); int foo(bool f) { if (f) { bar(); return 1; } else { bar(); return 2; } } ; GCC foo(bool): sub rsp, 8 test dil, dil je .L2 call bar() mov eax, 1 add rsp, 8 ret .L2: call bar() mov eax, 2 add rsp, 8 ret ; Clang foo(bool): push rbx mov ebx, edi call bar() mov eax, 2 sub eax, ebx pop rbx ret https://godbolt.org/z/j9eKG1dds