http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586
--- Comment #57 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2011-04-26 19:37:32 UTC --- (In reply to comment #54) > (In reply to comment #53) > > reduced testcase for 4.7 > > Does not fail here - can you still reproduce it? (It might have been fixed by > the patch for PR 48588. If it still occurs, I will try harder.) Fails for me here too, at -O0. Looking at the site of the error message, we get (note the "public unsigned DI" vs. "unsigned restrict DI": 3722 error ("non-trivial conversion at assignment"); (gdb) p debug_tree(lhs_type) <record_type 0x7ffff70dae70 array3_real(kind=8) BLK size <integer_cst 0x7ffff70d1420 type <integer_type 0x7ffff7ee50a8 bit_size_type> constant 768> unit size <integer_cst 0x7ffff70d1460 type <integer_type 0x7ffff7ee5000> constant 96> align 64 symtab 0 alias set -1 canonical type 0x7ffff70daf18 fields <field_decl 0x7ffff70df4c0 data type <pointer_type 0x7ffff7ee5dc8 type <void_type 0x7ffff7ee5d20 void> public unsigned DI size <integer_cst 0x7ffff7eea1e0 constant 64> unit size <integer_cst 0x7ffff7eea200 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff7ee5dc8 pointer_to_this <pointer_type 0x7ffff7ef7e70>> unsigned DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 constant 0> bit offset <integer_cst 0x7ffff7eea420 constant 0> context <record_type 0x7ffff70daf18 array_descriptor3> chain <field_decl 0x7ffff70df558 offset type <integer_type 0x7ffff7ee55e8 long int> DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 0> bit offset <integer_cst 0x7ffff7eea1e0 64> context <record_type 0x7ffff70daf18 array_descriptor3> chain <field_decl 0x7ffff70df5f0 dtype>>>> $1 = void (gdb) p debug_tree(rhs1_type) <record_type 0x7ffff70da7e0 array3_real(kind=8) BLK size <integer_cst 0x7ffff70d1420 type <integer_type 0x7ffff7ee50a8 bit_size_type> constant 768> unit size <integer_cst 0x7ffff70d1460 type <integer_type 0x7ffff7ee5000> constant 96> align 64 symtab 0 alias set -1 canonical type 0x7ffff70da930 fields <field_decl 0x7ffff7ededa8 data type <pointer_type 0x7ffff70da888 type <void_type 0x7ffff7ee5d20 void> unsigned restrict DI size <integer_cst 0x7ffff7eea1e0 constant 64> unit size <integer_cst 0x7ffff7eea200 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff70da888> unsigned DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 constant 0> bit offset <integer_cst 0x7ffff7eea420 constant 0> context <record_type 0x7ffff70da930 array_descriptor3> chain <field_decl 0x7ffff7edee40 offset type <integer_type 0x7ffff7ee55e8 long int> DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 0> bit offset <integer_cst 0x7ffff7eea1e0 64> context <record_type 0x7ffff70da930 array_descriptor3> chain <field_decl 0x7ffff7edeed8 dtype>>>> $2 = void (gdb) <record_type 0x7ffff70da7e0 array3_real(kind=8) BLK size <integer_cst 0x7ffff70d1420 type <integer_type 0x7ffff7ee50a8 bit_size_type> constant 768> unit size <integer_cst 0x7ffff70d1460 type <integer_type 0x7ffff7ee5000> constant 96> align 64 symtab 0 alias set -1 canonical type 0x7ffff70da930 fields <field_decl 0x7ffff7ededa8 data type <pointer_type 0x7ffff70da888 type <void_type 0x7ffff7ee5d20 void> unsigned restrict DI size <integer_cst 0x7ffff7eea1e0 constant 64> unit size <integer_cst 0x7ffff7eea200 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff70da888> unsigned DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 constant 0> bit offset <integer_cst 0x7ffff7eea420 constant 0> context <record_type 0x7ffff70da930 array_descriptor3> chain <field_decl 0x7ffff7edee40 offset type <integer_type 0x7ffff7ee55e8 long int> DI file test.f90 line 17 col 0 size <integer_cst 0x7ffff7eea1e0 64> unit size <integer_cst 0x7ffff7eea200 8> align 64 offset_align 128 offset <integer_cst 0x7ffff7ed5f00 0> bit offset <integer_cst 0x7ffff7eea1e0 64> context <record_type 0x7ffff70da930 array_descriptor3> chain <field_decl 0x7ffff7edeed8 dtype>>>> $3 = void