diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2017-05-22 12:47:43 +0000 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2017-05-22 12:47:43 +0000 |
| commit | 2c87f5341dd0e0614d5b1e423e3dc1168cfedf44 (patch) | |
| tree | 935bee54cec40e178dcaf8c58700ae436f4a72a3 /clang/test | |
| parent | e0b726f2fa4b9881e088c040791bb61b10b96632 (diff) | |
| download | bcm5719-llvm-2c87f5341dd0e0614d5b1e423e3dc1168cfedf44.tar.gz bcm5719-llvm-2c87f5341dd0e0614d5b1e423e3dc1168cfedf44.zip | |
[mips] Support `micromips` attribute
This patch adds support for the `micromips` and `nomicromips` attributes
for MIPS targets.
Differential revision: https://reviews.llvm.org/D33363
llvm-svn: 303546
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGen/micromips-attr.c | 12 | ||||
| -rw-r--r-- | clang/test/Misc/pragma-attribute-supported-attributes-list.test | 4 | ||||
| -rw-r--r-- | clang/test/Sema/attr-micromips.c | 15 |
3 files changed, 30 insertions, 1 deletions
diff --git a/clang/test/CodeGen/micromips-attr.c b/clang/test/CodeGen/micromips-attr.c new file mode 100644 index 00000000000..96ba774afc0 --- /dev/null +++ b/clang/test/CodeGen/micromips-attr.c @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -triple mips-linux-gnu -emit-llvm -o - %s | FileCheck %s + +void __attribute__((micromips)) foo (void) {} + +// CHECK: define void @foo() [[MICROMIPS:#[0-9]+]] + +void __attribute__((nomicromips)) nofoo (void) {} + +// CHECK: define void @nofoo() [[NOMICROMIPS:#[0-9]+]] + +// CHECK: attributes [[MICROMIPS]] = { noinline nounwind {{.*}} "micromips" {{.*}} } +// CHECK: attributes [[NOMICROMIPS]] = { noinline nounwind {{.*}} "nomicromips" {{.*}} } diff --git a/clang/test/Misc/pragma-attribute-supported-attributes-list.test b/clang/test/Misc/pragma-attribute-supported-attributes-list.test index 0db17bdf402..d698276f7dc 100644 --- a/clang/test/Misc/pragma-attribute-supported-attributes-list.test +++ b/clang/test/Misc/pragma-attribute-supported-attributes-list.test @@ -2,7 +2,7 @@ // The number of supported attributes should never go down! -// CHECK: #pragma clang attribute supports 60 attributes: +// CHECK: #pragma clang attribute supports 62 attributes: // CHECK-NEXT: AMDGPUFlatWorkGroupSize (SubjectMatchRule_function) // CHECK-NEXT: AMDGPUNumSGPR (SubjectMatchRule_function) // CHECK-NEXT: AMDGPUNumVGPR (SubjectMatchRule_function) @@ -30,8 +30,10 @@ // CHECK-NEXT: IFunc (SubjectMatchRule_function) // CHECK-NEXT: InternalLinkage (SubjectMatchRule_variable, SubjectMatchRule_function, SubjectMatchRule_record) // CHECK-NEXT: LTOVisibilityPublic (SubjectMatchRule_record) +// CHECK-NEXT: MicroMips (SubjectMatchRule_function) // CHECK-NEXT: NoDebug (SubjectMatchRule_hasType_functionType, SubjectMatchRule_objc_method, SubjectMatchRule_variable_not_is_parameter) // CHECK-NEXT: NoDuplicate (SubjectMatchRule_function) +// CHECK-NEXT: NoMicroMips (SubjectMatchRule_function) // CHECK-NEXT: NoSanitize (SubjectMatchRule_function, SubjectMatchRule_objc_method, SubjectMatchRule_variable_is_global) // CHECK-NEXT: NoSanitizeSpecific (SubjectMatchRule_function, SubjectMatchRule_variable_is_global) // CHECK-NEXT: NoSplitStack (SubjectMatchRule_function) diff --git a/clang/test/Sema/attr-micromips.c b/clang/test/Sema/attr-micromips.c new file mode 100644 index 00000000000..95f22a571e4 --- /dev/null +++ b/clang/test/Sema/attr-micromips.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -triple mips-linux-gnu -fsyntax-only -verify %s + +__attribute__((nomicromips(0))) void foo1(); // expected-error {{'nomicromips' attribute takes no arguments}} +__attribute__((micromips(1))) void foo2(); // expected-error {{'micromips' attribute takes no arguments}} + +__attribute((nomicromips)) int a; // expected-error {{attribute only applies to functions}} +__attribute((micromips)) int b; // expected-error {{attribute only applies to functions}} + +__attribute__((micromips,mips16)) void foo5(); // expected-error {{'micromips' and 'mips16' attributes are not compatible}} \ + // expected-note {{conflicting attribute is here}} +__attribute__((mips16,micromips)) void foo6(); // expected-error {{'mips16' and 'micromips' attributes are not compatible}} \ + // expected-note {{conflicting attribute is here}} + +__attribute((micromips)) void foo7(); +__attribute((nomicromips)) void foo8(); |

