https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957
--- Comment #15 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> --- > --- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > That would be the > gcc_checking_assert (TREE_TYPE (name) == t); > assert then. So, what is TREE_TYPE (name) and what is t when this happens? Here's what I find (after recompiling tree.c with -g3 -O0): (gdb) up #1 0x09777f85 in fld_incomplete_type_of (t=0xfa58cc60, fld=0xfeffd6a8) at /vol/gcc/src/hg/trunk/local/gcc/tree.c:5312 5312 gcc_checking_assert (TREE_TYPE (name) == t); (gdb) p name $1 = (tree) 0xfa593000 (gdb) call TREE_TYPE (name) $2 = (tree) 0xfa58ccc0 (gdb) pt warning: Expression is not an assignment (and might have no effect) <record_type fa58ccc0 system__tasking__protected_objects__operations__communication_block sizes-gimplified volatile visited type_2 BLK size <integer_cst fa4058fc type <integer_type faefb0c0 bitsizetype> constant 64> unit-size <integer_cst fa405910 type <integer_type faefb060 sizetype> constant 8> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type fa58ccc0 fields <field_decl fa589e70 self type <pointer_type fa5a3a20 system__tasking__task_id type <record_type fa5a3960 system__tasking__ada_task_control_block> static unsigned SI size <integer_cst fa4058ac constant 32> unit-size <integer_cst fa4058c0 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type fa542900> side-effects volatile unsigned nonaddressable SI /var/gcc/regression/trunk/11-gcc/build/i386-pc-solaris2.11/libada/adainclude/s-tpobop.ads:193:7 size <integer_cst fa4058ac 32> unit-size <integer_cst fa4058c0 4> align:32 warn_if_not_align:0 offset_align 128 offset <integer_cst fa4058d4 constant 0> bit-offset <integer_cst fa405924 constant 0> context <record_type fa58cc60 system__tasking__protected_objects__operations__communication_block> chain <field_decl fa589ec8 enqueued type <boolean_type fa41b480 boolean> side-effects volatile unsigned nonaddressable QI /var/gcc/regression/trunk/11-gcc/build/i386-pc-solaris2.11/libada/adainclude/s-tpobop.ads:194:7 size <integer_cst fa4059b0 constant 8> unit-size <integer_cst fa4059c4 constant 1> align:8 warn_if_not_align:0 offset_align 128 offset <integer_cst fa4058d4 0> bit-offset <integer_cst fa4058ac 32> context <record_type fa58cc60 system__tasking__protected_objects__operations__communication_block> chain <field_decl fa589f20 cancelled>>> context <translation_unit_decl fa40f558 /vol/gcc/src/hg/trunk/local/gcc/testsuite/gnat.dg/lto8.adb> Ada size <integer_cst fa558d98 type <integer_type faefb0c0 bitsizetype> constant visited 48> pointer_to_this <pointer_type fa58ce40> reference_to_this <reference_type fa58cd20> chain <type_decl fa593000 system__tasking__protected_objects__operations__communication_block>> (gdb) p t $3 = (tree) 0xfa58cc60 (gdb) pt warning: Expression is not an assignment (and might have no effect) <record_type fa58cc60 system__tasking__protected_objects__operations__communication_block type_2 BLK size <integer_cst fa4058fc type <integer_type faefb0c0 bitsizetype> constant 64> unit-size <integer_cst fa405910 type <integer_type faefb060 sizetype> constant 8> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type fa58cc60 fields <field_decl fa589e70 self type <pointer_type fa5a3a20 system__tasking__task_id type <record_type fa5a3960 system__tasking__ada_task_control_block> static unsigned SI size <integer_cst fa4058ac constant 32> unit-size <integer_cst fa4058c0 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type fa542900> side-effects volatile unsigned nonaddressable SI /var/gcc/regression/trunk/11-gcc/build/i386-pc-solaris2.11/libada/adainclude/s-tpobop.ads:193:7 size <integer_cst fa4058ac 32> unit-size <integer_cst fa4058c0 4> align:32 warn_if_not_align:0 offset_align 128 offset <integer_cst fa4058d4 constant 0> bit-offset <integer_cst fa405924 constant 0> context <record_type fa58cc60 system__tasking__protected_objects__operations__communication_block> chain <field_decl fa589ec8 enqueued type <boolean_type fa41b480 boolean> side-effects volatile unsigned nonaddressable QI /var/gcc/regression/trunk/11-gcc/build/i386-pc-solaris2.11/libada/adainclude/s-tpobop.ads:194:7 size <integer_cst fa4059b0 constant 8> unit-size <integer_cst fa4059c4 constant 1> align:8 warn_if_not_align:0 offset_align 128 offset <integer_cst fa4058d4 0> bit-offset <integer_cst fa4058ac 32> context <record_type fa58cc60 system__tasking__protected_objects__operations__communication_block> chain <field_decl fa589f20 cancelled>>> context <translation_unit_decl fa40f558 /vol/gcc/src/hg/trunk/local/gcc/testsuite/gnat.dg/lto8.adb> Ada size <integer_cst fa558d98 type <integer_type faefb0c0 bitsizetype> constant visited 48> chain <type_decl fa589f78 system__tasking__protected_objects__operations__communication_block>>