Author: Nick Desaulniers
Date: 2021-06-21T11:42:06-07:00
New Revision: a63d4f6cbab133b0f1ce9afb562546fcc5bb2680

URL: 
https://github.com/llvm/llvm-project/commit/a63d4f6cbab133b0f1ce9afb562546fcc5bb2680
DIFF: 
https://github.com/llvm/llvm-project/commit/a63d4f6cbab133b0f1ce9afb562546fcc5bb2680.diff

LOG: [Clang][Codegen] rename no_profile fn attr no_profile_instrument_function

GCC has had this function attribute since GCC 7.1 for this purpose. I
added "no_profile" last week in D104475; rename this to
"no_profile_instrument_function" to improve compatibility with GCC.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80223#c11

Reviewed By: MaskRay, aaron.ballman

Differential Revision: https://reviews.llvm.org/D104658

Added: 
    clang/test/Sema/no_profile_instrument_function-attribute.c

Modified: 
    clang/include/clang/Basic/Attr.td
    clang/include/clang/Basic/AttrDocs.td
    clang/test/CodeGen/no_profile.c

Removed: 
    clang/test/Sema/no_profile-attribute.c


################################################################################
diff  --git a/clang/include/clang/Basic/Attr.td 
b/clang/include/clang/Basic/Attr.td
index 8829b4b6d560b..bfcf5f798d8fe 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -1971,9 +1971,9 @@ def NoInstrumentFunction : InheritableAttr {
 }
 
 def NoProfileFunction : InheritableAttr {
-  let Spellings = [Clang<"no_profile">];
+  let Spellings = [GCC<"no_profile_instrument_function">];
   let Subjects = SubjectList<[Function]>;
-  let Documentation = [NoProfileDocs];
+  let Documentation = [NoProfileInstrumentFunctionDocs];
   let SimpleHandler = 1;
 }
 

diff  --git a/clang/include/clang/Basic/AttrDocs.td 
b/clang/include/clang/Basic/AttrDocs.td
index 6173c8cd90af0..bf51b05acaaa2 100644
--- a/clang/include/clang/Basic/AttrDocs.td
+++ b/clang/include/clang/Basic/AttrDocs.td
@@ -2559,12 +2559,12 @@ This attribute accepts a single parameter that must be 
one of the following:
   }];
 }
 
-def NoProfileDocs : Documentation {
+def NoProfileInstrumentFunctionDocs : Documentation {
   let Category = DocCatFunction;
   let Content = [{
-Use the ``no_profile`` attribute on a function declaration to denote that the
-compiler should not instrument the function with profile-related
-instrumentation, such as via the
+Use the ``no_profile_instrument_function`` attribute on a function declaration
+to denote that the compiler should not instrument the function with
+profile-related instrumentation, such as via the
 ``-fprofile-generate`` / ``-fprofile-instr-generate`` /
 ``-fcs-profile-generate`` / ``-fprofile-arcs`` flags.
 }];

diff  --git a/clang/test/CodeGen/no_profile.c b/clang/test/CodeGen/no_profile.c
index 50ca71f4fa0ed..9c9524338fe59 100644
--- a/clang/test/CodeGen/no_profile.c
+++ b/clang/test/CodeGen/no_profile.c
@@ -8,7 +8,7 @@
 // RUN:   -emit-llvm -o - %s | FileCheck %s
 int g(int);
 
-void __attribute__((no_profile)) no_instr() {
+void __attribute__((no_profile_instrument_function)) no_instr() {
 // CHECK: define {{.*}}void @no_instr() [[ATTR:#[0-9]+]]
 }
 

diff  --git a/clang/test/Sema/no_profile-attribute.c 
b/clang/test/Sema/no_profile-attribute.c
deleted file mode 100644
index b3c073f130ac3..0000000000000
--- a/clang/test/Sema/no_profile-attribute.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-__attribute__((no_profile))
-void no_profile0(void);
-#if !__has_attribute(no_profile)
-#error "Where did the no_profile function attribute go?"
-#endif
-
-void no_profile1(__attribute__((no_profile)) int param); // expected-warning 
{{'no_profile' attribute only applies to functions}}
-__attribute__((no_profile(""))) // expected-error {{'no_profile' attribute 
takes no arguments}}
-void no_profile2(void);
-void no_profile3(void) {
-  __attribute__((no_profile)); // expected-error {{'no_profile' attribute 
cannot be applied to a statement}}
-}

diff  --git a/clang/test/Sema/no_profile_instrument_function-attribute.c 
b/clang/test/Sema/no_profile_instrument_function-attribute.c
new file mode 100644
index 0000000000000..4ede13c741077
--- /dev/null
+++ b/clang/test/Sema/no_profile_instrument_function-attribute.c
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 %s -fsyntax-only -verify
+__attribute__((no_profile_instrument_function))
+void no_profile0(void);
+#if !__has_attribute(no_profile_instrument_function)
+#error "Where did the no_profile_instrument_function function attribute go?"
+#endif
+
+void no_profile1(__attribute__((no_profile_instrument_function)) int param); 
// expected-warning {{'no_profile_instrument_function' attribute only applies 
to functions}}
+__attribute__((no_profile_instrument_function(""))) // expected-error 
{{'no_profile_instrument_function' attribute takes no arguments}}
+void no_profile2(void);
+void no_profile3(void) {
+  __attribute__((no_profile_instrument_function)); // expected-error 
{{'no_profile_instrument_function' attribute cannot be applied to a statement}}
+}


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to