https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70297
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- typedef unsigned int uint32_t; typedef uint32_t target_ulong; typedef uint32_t target_ulong __attribute__((aligned(4))); typedef struct tcg_context_t { target_ulong *gen_opc_pc; } tcg_context_t; (gdb) p qualified_type->type_common.name $6 = <field_decl 0x7ffff68abe40 gen_opc_pc> eh?! Hardware watchpoint 7: *$23 Old value = <type_decl 0x7ffff68abd10 uint32_t> New value = <type_decl 0x7ffff68abe40 target_ulong> ok... but that seems to get re-used. the above is from handle_aligned_attribute (node=0x7fffffffd980, name=<identifier_node 0x7ffff699ed70 aligned>, args=<tree_list 0x7ffff698c8c0>, flags=0, no_add_attrs=0x7fffffffd853) at /space/rguenther/src/svn/trunk3/gcc/c-family/c-common.c:7824 7824 TREE_USED (*type) = TREE_USED (decl); the type-names TREE_CODE gets cloobered here: Old value = TYPE_DECL New value = 16777254 0x0000000000759b42 in merge_decls ( newdecl=<type_decl 0x7ffff68abe40 target_ulong>, olddecl=<type_decl 0x7ffff68abda8 target_ulong>, newtype=<integer_type 0x7ffff698b690 target_ulong>, oldtype=<integer_type 0x7ffff698b540 target_ulong>) at /space/rguenther/src/svn/trunk3/gcc/c/c-decl.c:2607 2607 TREE_USED (newdecl) = 1; huh.