1 // RUN: %clang_cc1 -triple i386-unknown-unknown -fms-compatibility -std=c++11 -E %s -o - | FileCheck %s
3 // CHECK: has_cxx11_carries_dep
4 #if __has_cpp_attribute(carries_dependency)
5 int has_cxx11_carries_dep();
8 // CHECK: has_clang_fallthrough_1
9 #if __has_cpp_attribute(clang::fallthrough)
10 int has_clang_fallthrough_1();
13 // CHECK: does_not_have_selectany
14 #if !__has_cpp_attribute(selectany)
15 int does_not_have_selectany();
18 // The attribute name can be bracketed with double underscores.
19 // CHECK: has_clang_fallthrough_2
20 #if __has_cpp_attribute(clang::__fallthrough__)
21 int has_clang_fallthrough_2();
24 // The scope cannot be bracketed with double underscores.
25 // CHECK: does_not_have___clang___fallthrough
26 #if !__has_cpp_attribute(__clang__::fallthrough)
27 int does_not_have___clang___fallthrough();
30 // Test that C++11, target-specific attributes behave properly.
32 // CHECK: does_not_have_mips16
33 #if !__has_cpp_attribute(gnu::mips16)
34 int does_not_have_mips16();
37 // Test that the version numbers of attributes listed in SD-6 are supported
40 // CHECK: has_cxx11_carries_dep_vers
41 #if __has_cpp_attribute(carries_dependency) == 200809
42 int has_cxx11_carries_dep_vers();
45 // CHECK: has_cxx11_noreturn_vers
46 #if __has_cpp_attribute(noreturn) == 200809
47 int has_cxx11_noreturn_vers();
50 // CHECK: has_cxx14_deprecated_vers
51 #if __has_cpp_attribute(deprecated) == 201309
52 int has_cxx14_deprecated_vers();
55 // CHECK: has_cxx1z_nodiscard
56 #if __has_cpp_attribute(nodiscard) == 201603
57 int has_cxx1z_nodiscard();
60 // CHECK: has_cxx1z_fallthrough
61 #if __has_cpp_attribute(fallthrough) == 201603
62 int has_cxx1z_fallthrough();
65 // CHECK: has_declspec_uuid
66 #if __has_declspec_attribute(uuid)
67 int has_declspec_uuid();
70 // CHECK: has_declspec_uuid2
71 #if __has_declspec_attribute(__uuid__)
72 int has_declspec_uuid2();
75 // CHECK: does_not_have_declspec_fallthrough
76 #if !__has_declspec_attribute(fallthrough)
77 int does_not_have_declspec_fallthrough();