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);
/* A "noipa" function attribute implies "noinline", "noclone" and "no_icf"
      for those targets that support it.  */
--
2.32.0

Reply via email to