brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 3c72c08 Raw
58 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s2 3int i __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' attribute only applies to functions}}4 5void f1() __attribute__((speculative_load_hardening));6void f2() __attribute__((speculative_load_hardening(1))); // expected-error {{'speculative_load_hardening' attribute takes no arguments}}7 8template <typename T>9void tf1() __attribute__((speculative_load_hardening));10 11int f3(int __attribute__((speculative_load_hardening)), int); // expected-error {{'speculative_load_hardening' attribute only applies to functions}}12 13struct A {14  int f __attribute__((speculative_load_hardening));  // expected-error {{'speculative_load_hardening' attribute only applies to functions}}15  void mf1() __attribute__((speculative_load_hardening));16  static void mf2() __attribute__((speculative_load_hardening));17};18 19void f4() __attribute__((no_speculative_load_hardening, speculative_load_hardening)); // expected-error {{attributes are not compatible}}20// expected-note@-1 {{conflicting attribute is here}}21 22void f5() __attribute__((speculative_load_hardening, no_speculative_load_hardening)); // expected-error {{attributes are not compatible}}23// expected-note@-1 {{conflicting attribute is here}}24 25void f6() __attribute__((no_speculative_load_hardening)); // expected-note {{conflicting attribute is here}}26 27void f6() __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' and 'no_speculative_load_hardening' attributes are not compatible}}28 29int ci [[clang::speculative_load_hardening]]; // expected-error {{'clang::speculative_load_hardening' attribute only applies to functions}}30 31[[clang::speculative_load_hardening]] void cf1();32[[clang::speculative_load_hardening(1)]] void cf2(); // expected-error {{'clang::speculative_load_hardening' attribute takes no arguments}}33 34template <typename T>35[[clang::speculative_load_hardening]]36void ctf1();37 38int cf3(int c[[clang::speculative_load_hardening]], int); // expected-error {{'clang::speculative_load_hardening' attribute only applies to functions}}39 40struct CA {41  int f [[clang::speculative_load_hardening]];  // expected-error {{'clang::speculative_load_hardening' attribute only applies to functions}}42  [[clang::speculative_load_hardening]] void mf1();43  [[clang::speculative_load_hardening]] static void mf2();44};45 46[[clang::speculative_load_hardening, clang::no_speculative_load_hardening]] void cf4();  // expected-error {{attributes are not compatible}}47// expected-note@-1 {{conflicting attribute is here}}48 49[[clang::no_speculative_load_hardening, clang::speculative_load_hardening]] void cf5();  // expected-error {{attributes are not compatible}}50// expected-note@-1 {{conflicting attribute is here}}51 52[[clang::speculative_load_hardening]]53void cf6(); // expected-note@-1 {{conflicting attribute is here}}54 55[[clang::no_speculative_load_hardening]]56void cf6(); // expected-error@-1 {{'clang::no_speculative_load_hardening' and 'clang::speculative_load_hardening' attributes are not compatible}} \57 58