Ping for rtl, middle-end, or global reviewers.
r~ On 10/2/18 5:19 PM, Richard Henderson wrote: > * optabs-libfuncs.c (build_libfunc_function_visibility): > New, split out from... > (build_libfunc_function): ... here. > (init_one_libfunc_visibility): New, split out from ... > (init_one_libfunc): ... here. > --- > gcc/optabs-libfuncs.h | 2 ++ > gcc/optabs-libfuncs.c | 26 ++++++++++++++++++++------ > 2 files changed, 22 insertions(+), 6 deletions(-) > > diff --git a/gcc/optabs-libfuncs.h b/gcc/optabs-libfuncs.h > index 0669ea1fdd7..cf39da36887 100644 > --- a/gcc/optabs-libfuncs.h > +++ b/gcc/optabs-libfuncs.h > @@ -63,7 +63,9 @@ void gen_satfract_conv_libfunc (convert_optab, const char *, > void gen_satfractuns_conv_libfunc (convert_optab, const char *, > machine_mode, machine_mode); > > +tree build_libfunc_function_visibility (const char *, symbol_visibility); > tree build_libfunc_function (const char *); > +rtx init_one_libfunc_visibility (const char *, symbol_visibility); > rtx init_one_libfunc (const char *); > rtx set_user_assembler_libfunc (const char *, const char *); > > diff --git a/gcc/optabs-libfuncs.c b/gcc/optabs-libfuncs.c > index bd0df8baa37..73a28e9ca7a 100644 > --- a/gcc/optabs-libfuncs.c > +++ b/gcc/optabs-libfuncs.c > @@ -719,10 +719,10 @@ struct libfunc_decl_hasher : ggc_ptr_hash<tree_node> > /* A table of previously-created libfuncs, hashed by name. */ > static GTY (()) hash_table<libfunc_decl_hasher> *libfunc_decls; > > -/* Build a decl for a libfunc named NAME. */ > +/* Build a decl for a libfunc named NAME with visibility VIS. */ > > tree > -build_libfunc_function (const char *name) > +build_libfunc_function_visibility (const char *name, symbol_visibility vis) > { > /* ??? We don't have any type information; pretend this is "int foo ()". > */ > tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, > @@ -731,7 +731,7 @@ build_libfunc_function (const char *name) > DECL_EXTERNAL (decl) = 1; > TREE_PUBLIC (decl) = 1; > DECL_ARTIFICIAL (decl) = 1; > - DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; > + DECL_VISIBILITY (decl) = vis; > DECL_VISIBILITY_SPECIFIED (decl) = 1; > gcc_assert (DECL_ASSEMBLER_NAME (decl)); > > @@ -742,11 +742,19 @@ build_libfunc_function (const char *name) > return decl; > } > > +/* Build a decl for a libfunc named NAME. */ > + > +tree > +build_libfunc_function (const char *name) > +{ > + return build_libfunc_function_visibility (name, VISIBILITY_DEFAULT); > +} > + > /* Return a libfunc for NAME, creating one if we don't already have one. > - The returned rtx is a SYMBOL_REF. */ > + The decl is given visibility VIS. The returned rtx is a SYMBOL_REF. */ > > rtx > -init_one_libfunc (const char *name) > +init_one_libfunc_visibility (const char *name, symbol_visibility vis) > { > tree id, decl; > hashval_t hash; > @@ -763,12 +771,18 @@ init_one_libfunc (const char *name) > { > /* Create a new decl, so that it can be passed to > targetm.encode_section_info. */ > - decl = build_libfunc_function (name); > + decl = build_libfunc_function_visibility (name, vis); > *slot = decl; > } > return XEXP (DECL_RTL (decl), 0); > } > > +rtx > +init_one_libfunc (const char *name) > +{ > + return init_one_libfunc_visibility (name, VISIBILITY_DEFAULT); > +} > + > /* Adjust the assembler name of libfunc NAME to ASMSPEC. */ > > rtx >