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.