http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50960
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-11-02 14:37:35 UTC --- The vtable object looks like (with the patch): <var_decl 0x7ffff5a2c280 __vtab_m_T type <record_type 0x7ffff5b37dc8 __vtype_m_T BLK size <integer_cst 0x7ffff5b12980 constant 320> unit size <integer_cst 0x7ffff5b129a0 constant 40> align 64 symtab 0 alias set -1 canonical type 0x7ffff5b37dc8 fields <field_decl 0x7ffff5b31428 _hash type <integer_type 0x7ffff5a315e8 integer(kind=4)> SI file t.f90 line 18 col 0 size <integer_cst 0x7ffff5a34240 constant 32> unit size <integer_cst 0x7ffff5a34260 constant 4> align 32 offset_align 128 offset <integer_cst 0x7ffff5a20f00 constant 0> bit offset <integer_cst 0x7ffff5a20f60 constant 0> context <record_type 0x7ffff5b37dc8 __vtype_m_T> chain <field_decl 0x7ffff5b314c0 _size>> context <namespace_decl 0x7ffff5a4b7e8 m> pointer_to_this <pointer_type 0x7ffff5b37f18> chain <type_decl 0x7ffff5a4bcf0 D.1735>> addressable used public static BLK file t.f90 line 18 col 0 size <integer_cst 0x7ffff5b12980 320> unit size <integer_cst 0x7ffff5b129a0 40> align 256 context <namespace_decl 0x7ffff5a4b7e8 m> initial <constructor 0x7ffff5b1de70> chain <function_decl 0x7ffff5b38600 base>> it is not TREE_READONLY. The constructor looks ok: {._hash=6736034, ._size=0, ._extends=0B, ._def_init=&__def_init_m_T, ._copy=__copy_m_T, .bar=base} Instead of a VAR_DECL it could maybe also be a CONST_DECL(?). But first try setting TREE_READONLY on it.