https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61853
--- Comment #7 from John David Anglin <danglin at gcc dot gnu.org> --- Regarding the record type: (gdb) p debug_tree ((tree)0xfab48600) <record_type 0xfab48600 Energy sizes-gimplified asm_written needs-constructing type_1 type_5 DF size <integer_cst 0xfacf4378 type <integer_type 0xfad06120 bitsizetype> constant 64> unit size <integer_cst 0xfacf4390 type <integer_type 0xfad060c0 sizetype> constant 8> align 64 symtab -145262192 alias set -1 canonical type 0xfab44d20 fields <field_decl 0xf9ded720 rawValue_ type <real_type 0xfad06ba0 double sizes-gimplified asm_written type_6 DF size <integer_cst 0xfacf4378 64> unit size <integer_cst 0xfacf4390 8> align 64 symtab -85994080 alias set 8 canonical type 0xfad06ba0 precision 64 pointer_to_this <pointer_type 0xfad06cc0> reference_to_this <reference_type 0xfa6f5f60>> used private nonlocal decl_3 DF file ../include/ThePEG/Config/PhysicalQty.h line 162 col 10 size <integer_cst 0xfacf4378 64> unit size <integer_cst 0xfacf4390 8> align 64 offset_align 64 offset <integer_cst 0xfacf4348 constant 0> bit offset <integer_cst 0xfacf43a8 constant 0> context <record_type 0xfab44d20 Qty> chain <type_decl 0xf9de8480 Qty type <record_type 0xf9de84e0 Qty> used external nonlocal suppress-debug decl_4 VOID file ../include/ThePEG/Config/PhysicalQty.h line 82 col 1 align 8 context <record_type 0xfab44d20 Qty> result <record_type 0xfab44d20 Qty> chain <type_decl 0xf9deb420 Squared>>> context <namespace_decl 0xfad7ed20 ThePEG> full-name "ThePEG::Units::Energy" needs-constructor X() X(constX&) this=(X&) n_parents=0 use_template=1 interface-unknown pointer_to_this <pointer_type 0xf7ed7300> reference_to_this <reference_type 0xf7f18a20> chain <type_decl 0xfab48000 Qty>> $2 = void (gdb) p debug_tree ((tree)0xf7f1a980) <function_decl 0xf7f1a980 _ZTv0_n64_NK6ThePEG23ConstituentParticleData15constituentMassEv type <method_type 0xf7f13ba0 type <record_type 0xfab48600 Energy sizes-gimplified asm_written needs-constructing type_1 type_5 DF size <integer_cst 0xfacf4378 constant 64> unit size <integer_cst 0xfacf4390 constant 8> align 64 symtab -145262192 alias set -1 canonical type 0xfab44d20 fields <field_decl 0xf9ded720 rawValue_> context <namespace_decl 0xfad7ed20 ThePEG> full-name "ThePEG::Units::Energy" needs-constructor X() X(constX&) this=(X&) n_parents=0 use_template=1 interface-unknown pointer_to_this <pointer_type 0xf7ed7300> reference_to_this <reference_type 0xf7f18a20> chain <type_decl 0xfab48000 Qty>> SI size <integer_cst 0xfacf4318 constant 32> unit size <integer_cst 0xfacf4330 constant 4> align 32 symtab 0 alias set -1 canonical type 0xf7f13c60 method basetype <record_type 0xf7f135a0 ConstituentParticleData> arg-types <tree_list 0xf7f148b8 value <pointer_type 0xf7f13c00> chain <tree_list 0xfacf4b40 value <void_type 0xfad06960 void>>> pointer_to_this <pointer_type 0xf7f1bd80>> addressable used nothrow public ignored weak virtual decl_5 SI file ConstituentParticleData.h line 57 col 18 align 32 context <record_type 0xf7f135a0 ConstituentParticleData> initial <block 0xf73f1d58> result <result_decl 0xf71ef960 D.88242 type <record_type 0xfab48600 Energy> used ignored regdecl DF file ConstituentParticleData.h line 57 col 18 size <integer_cst 0xfacf4378 64> unit size <integer_cst 0xfacf4390 8> align 64 context <function_decl 0xf7f1a980 _ZTv0_n64_NK6ThePEG23ConstituentParticleData15constituentMassEv> (parallel:BLK [ (expr_list:REG_DEP_TRUE (reg:DI 101 [ <retval> ]) (const_int 0 [0])) ])> full-name "virtual ThePEG::Units::Energy ThePEG::ConstituentParticleData::_ZTv0_n64_NK6ThePEG23ConstituentParticleData15constituentMassEv() const" arguments <parm_decl 0xf7f21f00 this type <pointer_type 0xf7f13cc0 type <record_type 0xf7f13b40 ConstituentParticleData> readonly sizes-gimplified public unsigned SI size <integer_cst 0xfacf4318 32> unit size <integer_cst 0xfacf4330 4> align 32 symtab -157156016 alias set -1 canonical type 0xf7f13cc0> readonly used unsigned SI file ConstituentParticleData.h line 57 col 36 size <integer_cst 0xfacf4318 32> unit size <integer_cst 0xfacf4330 4> align 32 context <function_decl 0xf7f1a980 _ZTv0_n64_NK6ThePEG23ConstituentParticleData15constituentMassEv> (reg/f:SI 102 [ this ]) arg-type <pointer_type 0xf7f13cc0> incoming-rtl (reg:SI 26 %r26 [ this ])> struct-function 0xf7880c98> I'm not sure I can answer your first question.