https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117432
Bug ID: 117432 Summary: [11/12/13/14/15 Regression] IPA ICF disregards types of variadic arguments Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: amonakov at gcc dot gnu.org Target Milestone: --- void bar(int tag, ...); void foo32(void) { bar(1, -1, 0); } void foo64(void) { bar(1, -1LL, 0); } Starting with gcc-10 IPA ICF incorrectly decides that foo64 and foo32 are clones, and at -Os we get foo32: xorl %edx, %edx orl $-1, %esi movl $1, %edi xorl %eax, %eax jmp bar foo64: jmp foo32 (this passes -1u instead of -1ll as second argument to bar, on 32-bit x86 the terminating zero ends up in the wrong stack position, etc. on other targets)