The attribute emitter was using FunctionTemplate to map the diagnostic to "functions or methods", but that isn't a particularly clear diagnostic in these cases anyway (since they do not apply to ObjC methods). Updated the attribute emitter to remove custom logic for FunctionTemplateDecl, and updated the test cases for the change in diagnostic wording. llvm-svn: 209209
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
#define NO_SANITIZE_THREAD __attribute__((no_sanitize_thread))
|
|
|
|
#if !__has_attribute(no_sanitize_thread)
|
|
#error "Should support no_sanitize_thread"
|
|
#endif
|
|
|
|
void noanal_fun() NO_SANITIZE_THREAD;
|
|
|
|
void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \
|
|
// expected-error {{'no_sanitize_thread' attribute takes no arguments}}
|
|
|
|
int noanal_testfn(int y) NO_SANITIZE_THREAD;
|
|
|
|
int noanal_testfn(int y) {
|
|
int x NO_SANITIZE_THREAD = y; // \
|
|
// expected-error {{'no_sanitize_thread' attribute only applies to functions}}
|
|
return x;
|
|
}
|
|
|
|
int noanal_test_var NO_SANITIZE_THREAD; // \
|
|
// expected-error {{'no_sanitize_thread' attribute only applies to functions}}
|
|
|
|
class NoanalFoo {
|
|
private:
|
|
int test_field NO_SANITIZE_THREAD; // \
|
|
// expected-error {{'no_sanitize_thread' attribute only applies to functions}}
|
|
void test_method() NO_SANITIZE_THREAD;
|
|
};
|
|
|
|
class NO_SANITIZE_THREAD NoanalTestClass { // \
|
|
// expected-error {{'no_sanitize_thread' attribute only applies to functions}}
|
|
};
|
|
|
|
void noanal_fun_params(int lvar NO_SANITIZE_THREAD); // \
|
|
// expected-error {{'no_sanitize_thread' attribute only applies to functions}}
|