https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122273

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
 <component_ref 0x7ffff7235cf0
    type <boolean_type 0x7ffff7423b28 bool sizes-gimplified public unsigned
type_6 QI
        size <integer_cst 0x7ffff741b390 constant 8>
        unit-size <integer_cst 0x7ffff741b3a8 constant 1>
        align:8 warn_if_not_align:0 symtab:0 alias-set 1 canonical-type
0x7ffff7423b28 precision:1 min <integer_cst 0x7ffff741b5e8 0> max <integer_cst
0x7ffff741b618 1>>

    arg:0 <mem_ref 0x7ffff724db68
        type <record_type 0x7ffff723fdc8 s1 needs-constructing cxx-odr-p type_1
type_5 QI size <integer_cst 0x7ffff741b390 8> unit-size <integer_cst
0x7ffff741b3a8 1>
            align:8 warn_if_not_align:0 symtab:0 alias-set 2 canonical-type
0x7ffff723fdc8 fields <function_decl 0x7ffff724b500 __ct > context
<translation_unit_decl 0x7ffff7421000 t.cc>
            full-name "struct s1"
            needs-constructor X(constX&) this=(X&) n_parents=0 use_template=0
interface-unknown
            pointer_to_this <pointer_type 0x7ffff723ff18> reference_to_this
<reference_type 0x7ffff72499d8> chain <type_decl 0x7ffff72325a0 s1>>
        tree_1
        clique: 2 base: 1
        arg:0 <ssa_name 0x7ffff7246678 type <pointer_type 0x7ffff723ff18>
            var <parm_decl 0x7ffff7242f68 a>
            def_stmt GIMPLE_NOP
            version:4
            ptr-info 0x7ffff72369a8>
        arg:1 <integer_cst 0x7ffff72367f8 constant 0>>
    arg:1 <field_decl 0x7ffff72326e0 t type <boolean_type 0x7ffff7423b28 bool>
        used unsigned nonlocal decl_3 QI t.cc:6:8 size <integer_cst
0x7ffff741b390 8> unit-size <integer_cst 0x7ffff741b3a8 1>
        align:8 warn_if_not_align:0 offset_align 128 decl_not_flexarray: 0
        offset <integer_cst 0x7ffff741b2d0 constant 0>
        bit-offset <integer_cst 0x7ffff741b318 constant 0> context <record_type
0x7ffff723fdc8 s1>
        chain <function_decl 0x7ffff723ea00 __ct  type <method_type
0x7ffff723f2a0>
            asm_written used nothrow public static abstract weak autoinline
decl_5 QI defer-output t.cc:7:3 align:16 warn_if_not_align:0 context
<record_type 0x7ffff723fdc8 s1> initial <block 0x7ffff72412d8> result
<result_decl 0x7ffff723aa00 D.3294>
            full-name "s1::s1(bool)" chain <function_decl 0x7ffff723ed00
__ct_base >>>
    t.cc:7:17 start: t.cc:7:17 finish: t.cc:7:17>
$1 = void
(gdb) p debug_tree(gimple_assign_lhs (else_assign))
 <component_ref 0x7ffff7235d50
    type <boolean_type 0x7ffff7423b28 bool sizes-gimplified public unsigned
type_6 QI
        size <integer_cst 0x7ffff741b390 constant 8>
        unit-size <integer_cst 0x7ffff741b3a8 constant 1>
        align:8 warn_if_not_align:0 symtab:0 alias-set 1 canonical-type
0x7ffff7423b28 precision:1 min <integer_cst 0x7ffff741b5e8 0> max <integer_cst
0x7ffff741b618 1>>

    arg:0 <mem_ref 0x7ffff724dd98
        type <record_type 0x7ffff723fdc8 s1 needs-constructing cxx-odr-p type_1
type_5 QI size <integer_cst 0x7ffff741b390 8> unit-size <integer_cst
0x7ffff741b3a8 1>
            align:8 warn_if_not_align:0 symtab:0 alias-set 2 canonical-type
0x7ffff723fdc8 fields <function_decl 0x7ffff724b500 __ct > context
<translation_unit_decl 0x7ffff7421000 t.cc>
            full-name "struct s1"
            needs-constructor X(constX&) this=(X&) n_parents=0 use_template=0
interface-unknown
            pointer_to_this <pointer_type 0x7ffff723ff18> reference_to_this
<reference_type 0x7ffff72499d8> chain <type_decl 0x7ffff72325a0 s1>>
        tree_0 tree_1
        clique: 3 base: 1
        arg:0 <ssa_name 0x7ffff7246678 type <pointer_type 0x7ffff723ff18>
            var <parm_decl 0x7ffff7242f68 a>
            def_stmt GIMPLE_NOP
            version:4
            ptr-info 0x7ffff72369a8>
        arg:1 <integer_cst 0x7ffff72367f8 constant 0>>
    arg:1 <field_decl 0x7ffff72326e0 t type <boolean_type 0x7ffff7423b28 bool>
        used unsigned nonlocal decl_3 QI t.cc:6:8 size <integer_cst
0x7ffff741b390 8> unit-size <integer_cst 0x7ffff741b3a8 1>
        align:8 warn_if_not_align:0 offset_align 128 decl_not_flexarray: 0
        offset <integer_cst 0x7ffff741b2d0 constant 0>
        bit-offset <integer_cst 0x7ffff741b318 constant 0> context <record_type
0x7ffff723fdc8 s1>
        chain <function_decl 0x7ffff723ea00 __ct  type <method_type
0x7ffff723f2a0>
            asm_written used nothrow public static abstract weak autoinline
decl_5 QI defer-output t.cc:7:3 align:16 warn_if_not_align:0 context
<record_type 0x7ffff723fdc8 s1> initial <block 0x7ffff72412d8> result
<result_decl 0x7ffff723aa00 D.3294>
            full-name "s1::s1(bool)" chain <function_decl 0x7ffff723ed00
__ct_base >>>
    t.cc:7:17 start: t.cc:7:17 finish: t.cc:7:17>



So the reason is:
clique: 2 base: 1
vs
clique: 3 base: 1

(I will submit the patch which prints that out).

Now I need to understand why they are different and why it matters here ...

Reply via email to