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.

Reply via email to