Message ID | 20181002161915.18843-7-richard.henderson@linaro.org |
---|---|
State | New |
Headers | show |
Series | LSE atomics out-of-line | expand |
This one needs some other reviewers copied in, who may have missed that it is not an AARch64 only patch (it looks fine to me). James On Tue, Oct 02, 2018 at 11:19:10AM -0500, 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 > -- > 2.17.1 >
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 >
> * 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. Either that or add the parameter with a VISIBILITY_DEFAULT default argument. -- Eric Botcazou
On 10/31/18 5:32 PM, Eric Botcazou 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. > > Either that or add the parameter with a VISIBILITY_DEFAULT default argument. I thought of that, but thought this was slightly clearer from usage. I'm open the default option if you prefer. r~
> I thought of that, but thought this was slightly clearer from usage. I'm > open the default option if you prefer. No, either is fine as far as I'm concerned. -- Eric Botcazou
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