> > tree type_decl = build_decl (input_location, TYPE_DECL, > > > > get_identifier ("__asan_global"), ret); > > > > DECL_IGNORED_P (type_decl) = 1; > > > > DECL_ARTIFICIAL (type_decl) = 1; > > > > TYPE_FIELDS (ret) = fields[0]; > > > > TYPE_NAME (ret) = type_decl; > > > > TYPE_STUB_DECL (ret) = type_decl; > > > > > > It seems to me that setting TYPE_NAME to identifier node would be easier. > > Yeah. I probably added the DECL_INGORED_P to most of those so indeed > type_decls are somewhat pointless.
OK, I have tried to remove them and it passes bootstrap/regtest x86-64. Looks sane? Honza * asan.c (asan_global_struct): Turn TYPE_NAME into identifier. (ubsan_get_type_descriptor_type, ubsan_get_source_location_type, ubsan_create_data): Likewise. Index: asan.c =================================================================== --- asan.c (revision 263696) +++ asan.c (working copy) @@ -2515,13 +2515,8 @@ asan_global_struct (void) if (i) DECL_CHAIN (fields[i - 1]) = fields[i]; } - tree type_decl = build_decl (input_location, TYPE_DECL, - get_identifier ("__asan_global"), ret); - DECL_IGNORED_P (type_decl) = 1; - DECL_ARTIFICIAL (type_decl) = 1; TYPE_FIELDS (ret) = fields[0]; - TYPE_NAME (ret) = type_decl; - TYPE_STUB_DECL (ret) = type_decl; + TYPE_NAME (ret) = get_identifier ("__asan_global"); layout_type (ret); return ret; } Index: ubsan.c =================================================================== --- ubsan.c (revision 263696) +++ ubsan.c (working copy) @@ -221,14 +221,8 @@ ubsan_get_type_descriptor_type (void) if (i) DECL_CHAIN (fields[i - 1]) = fields[i]; } - tree type_decl = build_decl (input_location, TYPE_DECL, - get_identifier ("__ubsan_type_descriptor"), - ret); - DECL_IGNORED_P (type_decl) = 1; - DECL_ARTIFICIAL (type_decl) = 1; TYPE_FIELDS (ret) = fields[0]; - TYPE_NAME (ret) = type_decl; - TYPE_STUB_DECL (ret) = type_decl; + TYPE_NAME (ret) = get_identifier ("__ubsan_type_descriptor"); layout_type (ret); ubsan_type_descriptor_type = ret; return ret; @@ -269,14 +263,8 @@ ubsan_get_source_location_type (void) if (i) DECL_CHAIN (fields[i - 1]) = fields[i]; } - tree type_decl = build_decl (input_location, TYPE_DECL, - get_identifier ("__ubsan_source_location"), - ret); - DECL_IGNORED_P (type_decl) = 1; - DECL_ARTIFICIAL (type_decl) = 1; TYPE_FIELDS (ret) = fields[0]; - TYPE_NAME (ret) = type_decl; - TYPE_STUB_DECL (ret) = type_decl; + TYPE_NAME (ret) = get_identifier ("__ubsan_source_location"); layout_type (ret); ubsan_source_location_type = ret; return ret; @@ -586,13 +574,8 @@ ubsan_create_data (const char *name, int } va_end (args); - tree type_decl = build_decl (input_location, TYPE_DECL, - get_identifier (name), ret); - DECL_IGNORED_P (type_decl) = 1; - DECL_ARTIFICIAL (type_decl) = 1; TYPE_FIELDS (ret) = fields[0]; - TYPE_NAME (ret) = type_decl; - TYPE_STUB_DECL (ret) = type_decl; + TYPE_NAME (ret) = get_identifier (name); layout_type (ret); /* Now, fill in the type. */