1cbac3ad1SZola Bridges // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 2cbac3ad1SZola Bridges 3cbac3ad1SZola Bridges int i __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 4cbac3ad1SZola Bridges 5cbac3ad1SZola Bridges void f1() __attribute__((speculative_load_hardening)); 6cbac3ad1SZola Bridges void f2() __attribute__((speculative_load_hardening(1))); // expected-error {{'speculative_load_hardening' attribute takes no arguments}} 7cbac3ad1SZola Bridges 8cbac3ad1SZola Bridges template <typename T> 9cbac3ad1SZola Bridges void tf1() __attribute__((speculative_load_hardening)); 10cbac3ad1SZola Bridges 11cbac3ad1SZola Bridges int f3(int __attribute__((speculative_load_hardening)), int); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 12cbac3ad1SZola Bridges 13cbac3ad1SZola Bridges struct A { 14cbac3ad1SZola Bridges int f __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 15cbac3ad1SZola Bridges void mf1() __attribute__((speculative_load_hardening)); 16cbac3ad1SZola Bridges static void mf2() __attribute__((speculative_load_hardening)); 17cbac3ad1SZola Bridges }; 18cbac3ad1SZola Bridges 19826ef595SZola Bridges void f4() __attribute__((no_speculative_load_hardening, speculative_load_hardening)); // expected-error {{attributes are not compatible}} 20826ef595SZola Bridges // expected-note@-1 {{conflicting attribute is here}} 21826ef595SZola Bridges 22826ef595SZola Bridges void f5() __attribute__((speculative_load_hardening, no_speculative_load_hardening)); // expected-error {{attributes are not compatible}} 23826ef595SZola Bridges // expected-note@-1 {{conflicting attribute is here}} 24826ef595SZola Bridges 25*4be8a269SAaron Ballman void f6() __attribute__((no_speculative_load_hardening)); // expected-note {{conflicting attribute is here}} 26826ef595SZola Bridges 27*4be8a269SAaron Ballman void f6() __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' and 'no_speculative_load_hardening' attributes are not compatible}} 28826ef595SZola Bridges 29cbac3ad1SZola Bridges int ci [[clang::speculative_load_hardening]]; // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 30cbac3ad1SZola Bridges 31cbac3ad1SZola Bridges [[clang::speculative_load_hardening]] void cf1(); 32cbac3ad1SZola Bridges [[clang::speculative_load_hardening(1)]] void cf2(); // expected-error {{'speculative_load_hardening' attribute takes no arguments}} 33cbac3ad1SZola Bridges 34cbac3ad1SZola Bridges template <typename T> 35cbac3ad1SZola Bridges [[clang::speculative_load_hardening]] 36cbac3ad1SZola Bridges void ctf1(); 37cbac3ad1SZola Bridges 38cbac3ad1SZola Bridges int cf3(int c[[clang::speculative_load_hardening]], int); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 39cbac3ad1SZola Bridges 40cbac3ad1SZola Bridges struct CA { 41cbac3ad1SZola Bridges int f [[clang::speculative_load_hardening]]; // expected-error {{'speculative_load_hardening' attribute only applies to functions}} 42cbac3ad1SZola Bridges [[clang::speculative_load_hardening]] void mf1(); 43cbac3ad1SZola Bridges [[clang::speculative_load_hardening]] static void mf2(); 44cbac3ad1SZola Bridges }; 45826ef595SZola Bridges 46826ef595SZola Bridges [[clang::speculative_load_hardening, clang::no_speculative_load_hardening]] void cf4(); // expected-error {{attributes are not compatible}} 47826ef595SZola Bridges // expected-note@-1 {{conflicting attribute is here}} 48826ef595SZola Bridges 49826ef595SZola Bridges [[clang::no_speculative_load_hardening, clang::speculative_load_hardening]] void cf5(); // expected-error {{attributes are not compatible}} 50826ef595SZola Bridges // expected-note@-1 {{conflicting attribute is here}} 51826ef595SZola Bridges 52826ef595SZola Bridges [[clang::speculative_load_hardening]] 53*4be8a269SAaron Ballman void cf6(); // expected-note@-1 {{conflicting attribute is here}} 54826ef595SZola Bridges 55826ef595SZola Bridges [[clang::no_speculative_load_hardening]] 56*4be8a269SAaron Ballman void cf6(); // expected-error@-1 {{'no_speculative_load_hardening' and 'speculative_load_hardening' attributes are not compatible}} \ 57*4be8a269SAaron Ballman 58