diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -1971,9 +1971,9 @@ } 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 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -2559,12 +2559,12 @@ }]; } -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 --- 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 --- 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 --- /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}} +}