int a [[gnu::used]]; // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):9 %s | FileCheck --check-prefix=STD %s // STD: COMPLETION: Pattern : __carries_dependency__ // STD-NOT: COMPLETION: Pattern : __convergent__ // STD: COMPLETION: Pattern : __gnu__::__used__ // STD-NOT: COMPLETION: Pattern : __gnu__::used // STD-NOT: COMPLETION: Pattern : __used__ // STD: COMPLETION: Pattern : _Clang::__convergent__ // STD: COMPLETION: Pattern : carries_dependency // STD-NOT: COMPLETION: Pattern : clang::called_once // STD: COMPLETION: Pattern : clang::convergent // STD-NOT: COMPLETION: Pattern : convergent // STD-NOT: COMPLETION: Pattern : gnu::__used__ // STD: COMPLETION: Pattern : gnu::abi_tag(<#Tags...#>) // STD: COMPLETION: Pattern : gnu::alias(<#Aliasee#>) // STD: COMPLETION: Pattern : gnu::used // STD-NOT: COMPLETION: Pattern : used // RUN: %clang_cc1 -code-completion-at=%s:%(line-17):9 -xobjective-c++ %s | FileCheck --check-prefix=STD-OBJC %s // STD-OBJC: COMPLETION: Pattern : clang::called_once // RUN: %clang_cc1 -code-completion-at=%s:%(line-19):14 %s | FileCheck --check-prefix=STD-NS %s // STD-NS-NOT: COMPLETION: Pattern : __used__ // STD-NS-NOT: COMPLETION: Pattern : carries_dependency // STD-NS-NOT: COMPLETION: Pattern : clang::convergent // STD-NS-NOT: COMPLETION: Pattern : convergent // STD-NS-NOT: COMPLETION: Pattern : gnu::used // STD-NS: COMPLETION: Pattern : used int b [[__gnu__::used]]; // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):18 %s | FileCheck --check-prefix=STD-NSU %s // STD-NSU: COMPLETION: Pattern : __used__ // STD-NSU-NOT: COMPLETION: Pattern : used int c [[using gnu: used]]; // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):15 %s | FileCheck --check-prefix=STD-USING %s // STD-USING: COMPLETION: __gnu__ // STD-USING: COMPLETION: _Clang // STD-USING-NOT: COMPLETION: Pattern : carries_dependency // STD-USING: COMPLETION: clang // STD-USING-NOT: COMPLETION: Pattern : clang:: // STD-USING-NOT: COMPLETION: Pattern : gnu:: // STD-USING: COMPLETION: gnu // RUN: %clang_cc1 -code-completion-at=%s:%(line-9):20 %s | FileCheck --check-prefix=STD-NS %s int d __attribute__((used)); // RUN: %clang_cc1 -code-completion-at=%s:%(line-1):22 %s | FileCheck --check-prefix=GNU %s // GNU: COMPLETION: Pattern : __carries_dependency__ // GNU: COMPLETION: Pattern : __convergent__ // GNU-NOT: COMPLETION: Pattern : __gnu__::__used__ // GNU: COMPLETION: Pattern : __used__ // GNU-NOT: COMPLETION: Pattern : _Clang::__convergent__ // GNU: COMPLETION: Pattern : carries_dependency // GNU-NOT: COMPLETION: Pattern : clang::convergent // GNU: COMPLETION: Pattern : convergent // GNU-NOT: COMPLETION: Pattern : gnu::used // GNU: COMPLETION: Pattern : used #pragma clang attribute push (__attribute__((internal_linkage)), apply_to=variable) int e; #pragma clang attribute pop // RUN: %clang_cc1 -code-completion-at=%s:%(line-3):46 %s | FileCheck --check-prefix=PRAGMA %s // PRAGMA: COMPLETION: Pattern : internal_linkage #ifdef MS_EXT int __declspec(thread) f; // RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):16 %s | FileCheck --check-prefix=DS %s // DS-NOT: COMPLETION: Pattern : __convergent__ // DS-NOT: COMPLETION: Pattern : __used__ // DS-NOT: COMPLETION: Pattern : clang::convergent // DS-NOT: COMPLETION: Pattern : convergent // DS: COMPLETION: Pattern : thread // DS-NOT: COMPLETION: Pattern : used // DS: COMPLETION: Pattern : uuid [uuid("123e4567-e89b-12d3-a456-426614174000")] struct g; // RUN: %clang_cc1 -fms-extensions -DMS_EXT -code-completion-at=%s:%(line-1):2 %s | FileCheck --check-prefix=MS %s // MS-NOT: COMPLETION: Pattern : __uuid__ // MS-NOT: COMPLETION: Pattern : clang::convergent // MS-NOT: COMPLETION: Pattern : convergent // MS-NOT: COMPLETION: Pattern : thread // MS-NOT: COMPLETION: Pattern : used // MS: COMPLETION: Pattern : uuid #endif // MS_EXT void foo() { [[omp::sequence(directive(parallel), directive(critical))]] {} } // FIXME: support for omp attributes would be nice. // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-4):5 %s | FileCheck --check-prefix=OMP-NS --allow-empty %s // OMP-NS-NOT: COMPLETION: omp // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-6):10 %s | FileCheck --check-prefix=OMP-ATTR --allow-empty %s // OMP-ATTR-NOT: COMPLETION: Pattern : sequence // RUN: %clang_cc1 -fopenmp -code-completion-at=%s:%(line-8):19 %s | FileCheck --check-prefix=OMP-NESTED --allow-empty %s // OMP-NESTED-NOT: COMPLETION: Pattern : directive