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