diff options
Diffstat (limited to 'test/CodeGenCXX/target-features-error.cpp')
-rw-r--r-- | test/CodeGenCXX/target-features-error.cpp | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/test/CodeGenCXX/target-features-error.cpp b/test/CodeGenCXX/target-features-error.cpp index 44179deaf3..28fe4d0e72 100644 --- a/test/CodeGenCXX/target-features-error.cpp +++ b/test/CodeGenCXX/target-features-error.cpp @@ -1,4 +1,6 @@ -// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - +// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -DTEST1 +// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -DTEST2 +// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -DTEST3 struct S { __attribute__((always_inline, target("avx512f"))) @@ -9,9 +11,51 @@ struct S { void operator()(){ } }; +__attribute__((always_inline, target("avx512f"))) +void free_func(){} + +#ifdef TEST1 void usage(S & s) { s.foo(); // expected-error {{'foo' requires target feature 'avx512f'}} (void)(int)s; // expected-error {{'operator int' requires target feature 'avx512f'}} s(); // expected-error {{'operator()' requires target feature 'avx512f'}} + free_func(); // expected-error{{'free_func' requires target feature 'avx512f'}} + +} +#endif + +#ifdef TEST2 +__attribute__((target("avx512f"))) +void usage(S & s) { + s.foo(); + (void)(int)s; + s(); + + [&s] { + s.foo(); // expected-error {{'foo' requires target feature 'avx512f'}} + (void)(int) s; // expected-error {{'operator int' requires target feature 'avx512f'}} + s(); // expected-error {{'operator()' requires target feature 'avx512f'}} + free_func(); // expected-error{{'free_func' requires target feature 'avx512f'}} + }(); +} +#endif + +#ifdef TEST3 +void usage(S & s) { + + [&s] () __attribute__((target("avx512f"))) { + s.foo(); + (void)(int) s; + s(); + free_func(); + }(); + + [&s] { + s.foo(); // expected-error {{'foo' requires target feature 'avx512f'}} + (void)(int) s; // expected-error {{'operator int' requires target feature 'avx512f'}} + s(); // expected-error {{'operator()' requires target feature 'avx512f'}} + free_func(); // expected-error{{'free_func' requires target feature 'avx512f'}} + }(); } +#endif |