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?

Reply via email to