Compiler projects using llvm
// RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm %s 2>&1 | FileCheck -check-prefix=DEFAULT %s
// RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm -fvisibility=protected  %s 2>&1 | FileCheck -check-prefix=OVERRIDE-PROTECTED  %s
// RUN: %clang -### -target amdgcn-amd-amdhsa -x cl -c -emit-llvm -fvisibility-ms-compat  %s 2>&1 | FileCheck -check-prefix=OVERRIDE-MS  %s

// RUN: %clang -### -target amdgcn-mesa-mesa3d -x cl -c -emit-llvm %s 2>&1 | FileCheck -check-prefix=DEFAULT %s
// RUN: %clang -### -target amdgcn-mesa-mesa3d -x cl -c -emit-llvm -fvisibility=protected  %s 2>&1 | FileCheck -check-prefix=OVERRIDE-PROTECTED  %s
// RUN: %clang -### -target amdgcn-mesa-mesa3d -x cl -c -emit-llvm -fvisibility-ms-compat  %s 2>&1 | FileCheck -check-prefix=OVERRIDE-MS  %s

// DEFAULT-DAG: "-fvisibility" "hidden"
// DEFAULT-DAG: "-fapply-global-visibility-to-externs"

// OVERRIDE-PROTECTED-NOT: "-fapply-global-visibility-to-externs"
// OVERRIDE-PROTECTED: "-fvisibility" "protected"
// OVERRIDE-PROTECTED-NOT: "-fapply-global-visibility-to-externs"

// OVERRIDE-MS-NOT: "-fapply-global-visibility-to-externs"
// OVERRIDE-MS-DAG: "-fvisibility" "hidden"
// OVERRIDE-MS-DAG: "-ftype-visibility" "default"
// OVERRIDE-MS-NOT: "-fapply-global-visibility-to-externs"