https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89711
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- The issue is that the same DECL_RESULT is used for xd.resolver and tx.resolver. Maybe they are commoned by IPA ICF? But the function decls still are different... tx.resolver/6 (tx.resolver) @0x7ffff687c870 Type: function definition analyzed Visibility: force_output prevailing_def_ironly artificial References: tx.avx.0/3 (addr)tx.default.1/1 (addr) Referring: Availability: available Function flags: count:1073741824 (estimated locally) body Called by: Calls: __builtin_cpu_supports/8 (1073741824 (estimated locally),1.00 per call) __builtin_cpu_init/7 (1073741824 (estimated locally),1.00 per call) $23 = void xd.resolver/10 (xd.resolver) @0x7ffff687c438 Type: function definition analyzed Visibility: force_output prevailing_def_ironly artificial References: xd.avx.0/4 (addr)xd.default.1/0 (addr) Referring: Availability: available Function flags: count:1073741824 (estimated locally) body Called by: Calls: __builtin_cpu_supports/8 (1073741824 (estimated locally),1.00 per call) __builtin_cpu_init/7 (1073741824 (estimated locally),1.00 per call) $27 = void DECL_RESULT (tx.resolver): <result_decl 0x7ffff6884258 D.4339 type <pointer_type 0x7ffff6896000 type <void_type 0x7ffff688ff18 void VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality pointer_to_this <pointer_type 0x7ffff6896000>> public unsigned DI size <integer_cst 0x7ffff687ab70 constant 64> unit-size <integer_cst 0x7ffff687ab88 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality pointer_to_this <pointer_type 0x7ffff689bb28>> unsigned ignored DI (null):0:0 size <integer_cst 0x7ffff687ab70 64> unit-size <integer_cst 0x7ffff687ab88 8> align:64 warn_if_not_align:0 context <translation_unit_decl 0x7ffff68841e0 t.c>> DECL_RESULT (xd.resolver): <result_decl 0x7ffff6884258 D.4339 type <pointer_type 0x7ffff6896000 type <void_type 0x7ffff688ff18 void VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality pointer_to_this <pointer_type 0x7ffff6896000>> public unsigned DI size <integer_cst 0x7ffff687ab70 constant 64> unit-size <integer_cst 0x7ffff687ab88 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 structural-equality pointer_to_this <pointer_type 0x7ffff689bb28>> unsigned ignored DI (null):0:0 size <integer_cst 0x7ffff687ab70 64> unit-size <integer_cst 0x7ffff687ab88 8> align:64 warn_if_not_align:0 context <translation_unit_decl 0x7ffff68841e0 t.c>> maybe they are somehow commoned by tree merging? Indeed they are. I wonder why they have the same DECL_CONTEXT? Where are they generated?