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 ...