https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94146
Bug ID: 94146 Summary: Merging functions with same bodies stopped working Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: antoshkka at gmail dot com Target Milestone: --- Consider the example: extern int x , y; int ternary(int i) { return i > 0 ? x : y; } int ternary2(int i) { return i > 0 ? x : y; } GCC9 was merging the functions with -O2: ternary2(int): jmp ternary(int) With GCC10 merging at -O2 is missing and function bodies are duplicated even for very big functions: https://godbolt.org/z/2kH8VR