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