From 4e7d02606ea8b0dac11887b1f759ea61d5394d86 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Wed, 11 Oct 2017 15:33:51 +0000 Subject: [PATCH] DECL_ASSEMBLER_NAME and friends https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00582.html * tree.h (DECL_ASSEMBLER_NAME_RAW): New. (SET_DECL_ASSEMBLER_NAME): Use it. (DECL_ASSEMBLER_NAME_SET_P): Likewise. (COPY_DECL_ASSEMBLER_NAME): Likewise. * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW. lto/ * lto.c (mentions_vars_p_decl_with_vis): Use DECL_ASSEMBLER_NAME_RAW. (lto_fixup_prevailing_decls): Likewise. cp * decl2.c (struct mangled_decl_hash): Use DECL_ASSEMBLER_NAME_RAW. (record_mangling): Likewise. From-SVN: r253647 --- gcc/ChangeLog | 13 +++++++++++-- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl2.c | 8 ++++---- gcc/lto/ChangeLog | 6 ++++++ gcc/lto/lto.c | 4 ++-- gcc/tree.c | 2 +- gcc/tree.h | 13 +++++++------ 7 files changed, 36 insertions(+), 15 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d09e10..273f561 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-10-11 Nathan Sidwell + + * tree.h (DECL_ASSEMBLER_NAME_RAW): New. + (SET_DECL_ASSEMBLER_NAME): Use it. + (DECL_ASSEMBLER_NAME_SET_P): Likewise. + (COPY_DECL_ASSEMBLER_NAME): Likewise. + * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW. + 2017-10-11 Jan Hubicka * config.gcc (i386, x86_64): Add extra objects. @@ -221,8 +229,9 @@ 2017-10-10 Jan Hubicka - * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, X86_TUNE_ADJUST_UNROLL, - X86_TUNE_ONE_IF_CONV_INSN): Move to right spot in the file. + * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, + X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right + spot in the file. 2017-10-10 Richard Sandiford diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c0ca1f8..611742d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-10-11 Nathan Sidwell + + * decl2.c (struct mangled_decl_hash): Use DECL_ASSEMBLER_NAME_RAW. + (record_mangling): Likewise. + 2017-10-10 Nathan Sidwell * name-lookup.c (extern_c_fns): Rename to ... diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 3c93d5c..bc50962 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -103,7 +103,7 @@ static GTY(()) vec *no_linkage_decls; static GTY(()) vec *mangling_aliases; /* hash traits for declarations. Hashes single decls via - DECL_ASSEMBLER_NAME. */ + DECL_ASSEMBLER_NAME_RAW. */ struct mangled_decl_hash : ggc_remove { @@ -112,11 +112,11 @@ struct mangled_decl_hash : ggc_remove static hashval_t hash (const value_type decl) { - return IDENTIFIER_HASH_VALUE (DECL_ASSEMBLER_NAME (decl)); + return IDENTIFIER_HASH_VALUE (DECL_ASSEMBLER_NAME_RAW (decl)); } static bool equal (const value_type existing, compare_type candidate) { - tree name = DECL_ASSEMBLER_NAME (existing); + tree name = DECL_ASSEMBLER_NAME_RAW (existing); return candidate == name; } @@ -4399,7 +4399,7 @@ record_mangling (tree decl, bool need_warning) mangled_decls = hash_table::create_ggc (499); gcc_checking_assert (DECL_ASSEMBLER_NAME_SET_P (decl)); - tree id = DECL_ASSEMBLER_NAME (decl); + tree id = DECL_ASSEMBLER_NAME_RAW (decl); tree *slot = mangled_decls->find_slot_with_hash (id, IDENTIFIER_HASH_VALUE (id), INSERT); diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index fef0f9c..3e6b00b 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2017-10-11 Nathan Sidwell + + * lto.c (mentions_vars_p_decl_with_vis): Use + DECL_ASSEMBLER_NAME_RAW. + (lto_fixup_prevailing_decls): Likewise. + 2017-10-10 Richard Sandiford * lto.c (compare_tree_sccs_1): Use wi::to_wide when diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index cc36851..63ba73c 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -591,7 +591,7 @@ mentions_vars_p_decl_with_vis (tree t) return true; /* Accessor macro has side-effects, use field-name here. */ - CHECK_NO_VAR (t->decl_with_vis.assembler_name); + CHECK_NO_VAR (DECL_ASSEMBLER_NAME_RAW (t)); return false; } @@ -2557,7 +2557,7 @@ lto_fixup_prevailing_decls (tree t) } if (CODE_CONTAINS_STRUCT (code, TS_DECL_WITH_VIS)) { - LTO_NO_PREVAIL (t->decl_with_vis.assembler_name); + LTO_NO_PREVAIL (DECL_ASSEMBLER_NAME_RAW (t)); } if (CODE_CONTAINS_STRUCT (code, TS_DECL_NON_COMMON)) { diff --git a/gcc/tree.c b/gcc/tree.c index a43177b..8acbdf7 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -671,7 +671,7 @@ decl_assembler_name (tree decl) { if (!DECL_ASSEMBLER_NAME_SET_P (decl)) lang_hooks.set_decl_assembler_name (decl); - return DECL_WITH_VIS_CHECK (decl)->decl_with_vis.assembler_name; + return DECL_ASSEMBLER_NAME_RAW (decl); } /* When the target supports COMDAT groups, this indicates which group the diff --git a/gcc/tree.h b/gcc/tree.h index 9507c3b..b542f51 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2721,6 +2721,10 @@ extern void decl_value_expr_insert (tree, tree); LTO compilation and C++. */ #define DECL_ASSEMBLER_NAME(NODE) decl_assembler_name (NODE) +/* Raw accessor for DECL_ASSEMBLE_NAME. */ +#define DECL_ASSEMBLER_NAME_RAW(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name) + /* Return true if NODE is a NODE that can contain a DECL_ASSEMBLER_NAME. This is true of all DECL nodes except FIELD_DECL. */ #define HAS_DECL_ASSEMBLER_NAME_P(NODE) \ @@ -2731,11 +2735,11 @@ extern void decl_value_expr_insert (tree, tree); yet. */ #define DECL_ASSEMBLER_NAME_SET_P(NODE) \ (HAS_DECL_ASSEMBLER_NAME_P (NODE) \ - && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) + && DECL_ASSEMBLER_NAME_RAW (NODE) != NULL_TREE) /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */ #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \ - (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME)) + (DECL_ASSEMBLER_NAME_RAW (NODE) = (NAME)) /* Copy the DECL_ASSEMBLER_NAME from DECL1 to DECL2. Note that if DECL1's DECL_ASSEMBLER_NAME has not yet been set, using this macro will not cause @@ -2747,10 +2751,7 @@ extern void decl_value_expr_insert (tree, tree); which will try to set the DECL_ASSEMBLER_NAME for DECL1. */ #define COPY_DECL_ASSEMBLER_NAME(DECL1, DECL2) \ - (DECL_ASSEMBLER_NAME_SET_P (DECL1) \ - ? (void) SET_DECL_ASSEMBLER_NAME (DECL2, \ - DECL_ASSEMBLER_NAME (DECL1)) \ - : (void) 0) + SET_DECL_ASSEMBLER_NAME (DECL2, DECL_ASSEMBLER_NAME_RAW (DECL1)) /* Records the section name in a section attribute. Used to pass the name from decl_attributes to make_function_rtl and make_decl_rtl. */ -- cgit v1.1