diff options
author | Fangrui Song <maskray@google.com> | 2020-01-04 15:39:19 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2020-01-10 09:57:34 -0800 |
commit | a44c434b68e515ce9f2627367c83ff6b22328261 (patch) | |
tree | d568652ab8ec6c31af18a56b7925f053b0c41ff8 /clang/test/Sema | |
parent | a8fbdc576990653e92ce1d766659005678fd8514 (diff) | |
download | bcm5719-llvm-a44c434b68e515ce9f2627367c83ff6b22328261.tar.gz bcm5719-llvm-a44c434b68e515ce9f2627367c83ff6b22328261.zip |
Support function attribute patchable_function_entry
This feature is generic. Make it applicable for AArch64 and X86 because
the backend has only implemented NOP insertion for AArch64 and X86.
Reviewed By: nickdesaulniers, aaron.ballman
Differential Revision: https://reviews.llvm.org/D72221
Diffstat (limited to 'clang/test/Sema')
-rw-r--r-- | clang/test/Sema/patchable-function-entry-attr.c | 17 | ||||
-rw-r--r-- | clang/test/Sema/patchable-function-entry-attr.cpp | 9 |
2 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/Sema/patchable-function-entry-attr.c b/clang/test/Sema/patchable-function-entry-attr.c new file mode 100644 index 00000000000..f807bd45e42 --- /dev/null +++ b/clang/test/Sema/patchable-function-entry-attr.c @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -triple aarch64 -fsyntax-only -verify %s + +// expected-error@+1 {{'patchable_function_entry' attribute takes at least 1 argument}} +__attribute__((patchable_function_entry)) void f(); + +// expected-error@+1 {{'patchable_function_entry' attribute takes no more than 2 arguments}} +__attribute__((patchable_function_entry(0, 0, 0))) void f(); + +// expected-error@+1 {{'patchable_function_entry' attribute requires a non-negative integral compile time constant expression}} +__attribute__((patchable_function_entry(-1))) void f(); + +int i; +// expected-error@+1 {{'patchable_function_entry' attribute requires parameter 0 to be an integer constant}} +__attribute__((patchable_function_entry(i))) void f(); + +// expected-error@+1 {{'patchable_function_entry' attribute requires integer constant between 0 and 0 inclusive}} +__attribute__((patchable_function_entry(1, 1))) void f(); diff --git a/clang/test/Sema/patchable-function-entry-attr.cpp b/clang/test/Sema/patchable-function-entry-attr.cpp new file mode 100644 index 00000000000..c443b2d01cf --- /dev/null +++ b/clang/test/Sema/patchable-function-entry-attr.cpp @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -triple aarch64 -fsyntax-only -verify=silence %s +// RUN: %clang_cc1 -triple i386 -fsyntax-only -verify=silence %s +// RUN: %clang_cc1 -triple x86_64 -fsyntax-only -verify=silence %s +// RUN: %clang_cc1 -triple ppc64le -fsyntax-only -verify %s + +// silence-no-diagnostics + +// expected-warning@+1 {{unknown attribute 'patchable_function_entry' ignored}} +[[gnu::patchable_function_entry(0)]] void f(); |