On Fri, Aug 13, 2021 at 11:14 AM Martin Liška <mli...@suse.cz> wrote: > > Hi. > > This is a first part fixing the PR. It makes sense making "naked" functions > "noipa". > What's missing is IPA MOD pass support where the pass should not optimize fns > with "noipa" attributes. > > @Honza: Can you please implement that? > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? > Thanks, > Martin > > PR ipa/101354 > > gcc/ChangeLog: > > * attribs.c (decl_attributes): Make naked functions "noipa" > functions. > --- > gcc/attribs.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/gcc/attribs.c b/gcc/attribs.c > index afa485ed37d..e149f5b66dd 100644 > --- a/gcc/attribs.c > +++ b/gcc/attribs.c > @@ -517,14 +517,9 @@ decl_attributes (tree *node, tree attributes, int flags, > if (TREE_CODE (*node) == FUNCTION_DECL > && attributes > && lookup_attribute ("naked", attributes) != NULL > - && lookup_attribute_spec (get_identifier ("naked"))) > - { > - if (lookup_attribute ("noinline", attributes) == NULL) > - attributes = tree_cons (get_identifier ("noinline"), NULL, > attributes); > - > - if (lookup_attribute ("noclone", attributes) == NULL) > - attributes = tree_cons (get_identifier ("noclone"), NULL, > attributes); > - } > + && lookup_attribute_spec (get_identifier ("naked")) > + &&(lookup_attribute ("noipa", attributes) == NULL)) > + attributes = tree_cons (get_identifier ("noipa"), NULL, attributes);
that adds noipa only for the purpose of "decomposing" it below. > /* A "noipa" function attribute implies "noinline", "noclone" and "no_icf" > for those targets that support it. */ > -- > 2.32.0 >