1ece4e920SSam McCall int a [[gnu::used]];
2*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):9 %s | FileCheck --check-prefix=STD %s
3cab7c52aSSam McCall // STD: COMPLETION: Pattern : __carries_dependency__
4cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : __convergent__
5cab7c52aSSam McCall // STD: COMPLETION: Pattern : __gnu__::__used__
6cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : __gnu__::used
7cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : __used__
8cab7c52aSSam McCall // STD: COMPLETION: Pattern : _Clang::__convergent__
9cab7c52aSSam McCall // STD: COMPLETION: Pattern : carries_dependency
10cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : clang::called_once
11cab7c52aSSam McCall // STD: COMPLETION: Pattern : clang::convergent
12cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : convergent
13cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : gnu::__used__
14cab7c52aSSam McCall // STD: COMPLETION: Pattern : gnu::abi_tag(<#Tags...#>)
15cab7c52aSSam McCall // STD: COMPLETION: Pattern : gnu::alias(<#Aliasee#>)
16cab7c52aSSam McCall // STD: COMPLETION: Pattern : gnu::used
17cab7c52aSSam McCall // STD-NOT: COMPLETION: Pattern : used
18*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-17):9 -xobjective-c++ %s | FileCheck --check-prefix=STD-OBJC %s
19cab7c52aSSam McCall // STD-OBJC: COMPLETION: Pattern : clang::called_once
20*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-19):14 %s | FileCheck --check-prefix=STD-NS %s
21cab7c52aSSam McCall // STD-NS-NOT: COMPLETION: Pattern : __used__
22cab7c52aSSam McCall // STD-NS-NOT: COMPLETION: Pattern : carries_dependency
23cab7c52aSSam McCall // STD-NS-NOT: COMPLETION: Pattern : clang::convergent
24cab7c52aSSam McCall // STD-NS-NOT: COMPLETION: Pattern : convergent
25cab7c52aSSam McCall // STD-NS-NOT: COMPLETION: Pattern : gnu::used
26cab7c52aSSam McCall // STD-NS: COMPLETION: Pattern : used
27ece4e920SSam McCall int b [[__gnu__::used]];
28*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):18 %s | FileCheck --check-prefix=STD-NSU %s
29cab7c52aSSam McCall // STD-NSU: COMPLETION: Pattern : __used__
30cab7c52aSSam McCall // STD-NSU-NOT: COMPLETION: Pattern : used
31ece4e920SSam McCall
32ece4e920SSam McCall int c [[using gnu: used]];
33*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):15 %s | FileCheck --check-prefix=STD-USING %s
34ece4e920SSam McCall // STD-USING: COMPLETION: __gnu__
35ece4e920SSam McCall // STD-USING: COMPLETION: _Clang
36cab7c52aSSam McCall // STD-USING-NOT: COMPLETION: Pattern : carries_dependency
37ece4e920SSam McCall // STD-USING: COMPLETION: clang
38cab7c52aSSam McCall // STD-USING-NOT: COMPLETION: Pattern : clang::
39cab7c52aSSam McCall // STD-USING-NOT: COMPLETION: Pattern : gnu::
40ece4e920SSam McCall // STD-USING: COMPLETION: gnu
41*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-9):20 %s | FileCheck --check-prefix=STD-NS %s
42ece4e920SSam McCall
43ece4e920SSam McCall int d __attribute__((used));
44*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):22 %s | FileCheck --check-prefix=GNU %s
45cab7c52aSSam McCall // GNU: COMPLETION: Pattern : __carries_dependency__
46cab7c52aSSam McCall // GNU: COMPLETION: Pattern : __convergent__
47cab7c52aSSam McCall // GNU-NOT: COMPLETION: Pattern : __gnu__::__used__
48cab7c52aSSam McCall // GNU: COMPLETION: Pattern : __used__
49cab7c52aSSam McCall // GNU-NOT: COMPLETION: Pattern : _Clang::__convergent__
50cab7c52aSSam McCall // GNU: COMPLETION: Pattern : carries_dependency
51cab7c52aSSam McCall // GNU-NOT: COMPLETION: Pattern : clang::convergent
52cab7c52aSSam McCall // GNU: COMPLETION: Pattern : convergent
53cab7c52aSSam McCall // GNU-NOT: COMPLETION: Pattern : gnu::used
54cab7c52aSSam McCall // GNU: COMPLETION: Pattern : used
55ece4e920SSam McCall
56ece4e920SSam McCall #pragma clang attribute push (__attribute__((internal_linkage)), apply_to=variable)
57ece4e920SSam McCall int e;
58ece4e920SSam McCall #pragma clang attribute pop
59*cf9b25e0SSam McCall // RUN: %clang_cc1 -code-completion-at=%s:%(line-3):46 %s | FileCheck --check-prefix=PRAGMA %s
60cab7c52aSSam McCall // PRAGMA: COMPLETION: Pattern : internal_linkage
61ece4e920SSam McCall
62ece4e920SSam McCall #ifdef MS_EXT
63ece4e920SSam McCall int __declspec(thread) f;
64*cf9b25e0SSam McCall // RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):16 %s | FileCheck --check-prefix=DS %s
65cab7c52aSSam McCall // DS-NOT: COMPLETION: Pattern : __convergent__
66cab7c52aSSam McCall // DS-NOT: COMPLETION: Pattern : __used__
67cab7c52aSSam McCall // DS-NOT: COMPLETION: Pattern : clang::convergent
68cab7c52aSSam McCall // DS-NOT: COMPLETION: Pattern : convergent
69cab7c52aSSam McCall // DS: COMPLETION: Pattern : thread
70cab7c52aSSam McCall // DS-NOT: COMPLETION: Pattern : used
71cab7c52aSSam McCall // DS: COMPLETION: Pattern : uuid
72ece4e920SSam McCall
73ece4e920SSam McCall [uuid("123e4567-e89b-12d3-a456-426614174000")] struct g;
74*cf9b25e0SSam McCall // RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):2 %s | FileCheck --check-prefix=MS %s
75cab7c52aSSam McCall // MS-NOT: COMPLETION: Pattern : __uuid__
76cab7c52aSSam McCall // MS-NOT: COMPLETION: Pattern : clang::convergent
77cab7c52aSSam McCall // MS-NOT: COMPLETION: Pattern : convergent
78cab7c52aSSam McCall // MS-NOT: COMPLETION: Pattern : thread
79cab7c52aSSam McCall // MS-NOT: COMPLETION: Pattern : used
80cab7c52aSSam McCall // MS: COMPLETION: Pattern : uuid
81ece4e920SSam McCall #endif // MS_EXT
82ece4e920SSam McCall
foo()83ece4e920SSam McCall void foo() {
84ece4e920SSam McCall [[omp::sequence(directive(parallel), directive(critical))]]
85ece4e920SSam McCall {}
86ece4e920SSam McCall }
87ece4e920SSam McCall // FIXME: support for omp attributes would be nice.
88*cf9b25e0SSam McCall // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-4):5 %s | FileCheck --check-prefix=OMP-NS --allow-empty %s
89cab7c52aSSam McCall // OMP-NS-NOT: COMPLETION: omp
90*cf9b25e0SSam McCall // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-6):10 %s | FileCheck --check-prefix=OMP-ATTR --allow-empty %s
91cab7c52aSSam McCall // OMP-ATTR-NOT: COMPLETION: Pattern : sequence
92*cf9b25e0SSam McCall // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-8):19 %s | FileCheck --check-prefix=OMP-NESTED --allow-empty %s
93cab7c52aSSam McCall // OMP-NESTED-NOT: COMPLETION: Pattern : directive
94