Clang Project

clang_source_code/test/Preprocessor/has_attribute.c
1// RUN: %clang_cc1 -triple arm-unknown-linux -verify -E %s -o - | FileCheck %s
2
3// CHECK: always_inline
4#if __has_attribute(always_inline)
5int always_inline();
6#endif
7
8// CHECK: __always_inline__
9#if __has_attribute(__always_inline__)
10int __always_inline__();
11#endif
12
13// CHECK: no_dummy_attribute
14#if !__has_attribute(dummy_attribute)
15int no_dummy_attribute();
16#endif
17
18// CHECK: has_has_attribute
19#ifdef __has_attribute
20int has_has_attribute();
21#endif
22
23// CHECK: has_something_we_dont_have
24#if !__has_attribute(something_we_dont_have)
25int has_something_we_dont_have();
26#endif
27
28// rdar://10253857
29#if __has_attribute(__const)
30 int fn3() __attribute__ ((__const));
31#endif
32
33#if __has_attribute(const)
34 static int constFunction() __attribute__((const));
35#endif
36
37// CHECK: has_no_volatile_attribute
38#if !__has_attribute(volatile)
39int has_no_volatile_attribute();
40#endif
41
42// CHECK: has_arm_interrupt
43#if __has_attribute(interrupt)
44  int has_arm_interrupt();
45#endif
46
47// CHECK: does_not_have_dllexport
48#if !__has_attribute(dllexport)
49  int does_not_have_dllexport();
50#endif
51
52// CHECK: does_not_have_uuid
53#if !__has_attribute(uuid)
54  int does_not_have_uuid
55#endif
56
57#if __has_cpp_attribute(selectany) // expected-error {{function-like macro '__has_cpp_attribute' is not defined}}
58#endif
59