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