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

--- Comment #33 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Andrew Pinski from comment #32)
> (In reply to H.J. Lu from comment #31)
> > (In reply to Andrew Pinski from comment #30)
> > > 
> > > Isn't an empty record is one without any field decls?
> > 
> > I thin it is language specific.
> 
> How so?  An record without any field decls is empty and most of the rest of
> the middle-end treats it that way.

This is a C++ empty class with field decls from PR 68355:

(gdb) cal debug_tree (type)
 <record_type 0x7ffff164e540 integral_constant type_5 type_6 QI
    size <integer_cst 0x7ffff14e5f90 type <integer_type 0x7ffff14e92a0
bitsizetype> constant 8>
    unit size <integer_cst 0x7ffff14e5fa8 type <integer_type 0x7ffff14e91f8
sizetype> constant 1>
    align 8 symtab 0 alias set -1 canonical type 0x7ffff164e540
    fields <var_decl 0x7ffff7ff9d80 value
        type <boolean_type 0x7ffff164e9d8 bool readonly unsigned type_6 QI size
<integer_cst 0x7ffff14e5f90 8> unit size <integer_cst 0x7ffff14e5fa8 1>
            align 8 symtab 0 alias set -1 canonical type 0x7ffff164e9d8
precision 1 min <integer_cst 0x7ffff1506210 0> max <integer_cst 0x7ffff1506240
1>>
        readonly constant used public static tree_3 unsigned external nonlocal
decl_3 decl_6 QI file bar.ii line 4 col 24 size <integer_cst 0x7ffff14e5f90 8>
unit size <integer_cst 0x7ffff14e5fa8 1>
        align 8 context <record_type 0x7ffff164e540 integral_constant>
        template-info 0x7ffff164c220
        chain <type_decl 0x7ffff1645850 integral_constant type <record_type
0x7ffff164e930 integral_constant>
            external nonlocal suppress-debug decl_4 VOID file bar.ii line 3 col
1
            align 8 context <record_type 0x7ffff164e540 integral_constant>
result <record_type 0x7ffff164e540 integral_constant>
            chain <type_decl 0x7ffff16458e8 value_type>>> context
<translation_unit_decl 0x7ffff14f1168 D.1>
    full-name "struct integral_constant<bool, true>"
    X() has-type-conversion X(constX&) this=(X&) n_parents=0 use_template=1
interface-unknown
    pointer_to_this <pointer_type 0x7ffff1650000> reference_to_this
<reference_type 0x7ffff1650498> chain <type_decl 0x7ffff1645720
integral_constant>>
(gdb)

Reply via email to