43 lines · c
1// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility=hidden -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-HIDDEN %s2// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility=protected -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-PROTECTED %s3// RUN: %clang_cc1 %s -std=c11 -triple=x86_64-pc-linux -fvisibility=default -fapply-global-visibility-to-externs -emit-llvm -o - | FileCheck --check-prefix=CHECK-DEFAULT %s4 5// CHECK-HIDDEN: @var_hidden = external hidden global6// CHECK-PROTECTED: @var_hidden = external hidden global7// CHECK-DEFAULT: @var_hidden = external hidden global8__attribute__((visibility("hidden"))) extern int var_hidden;9// CHECK-HIDDEN: @var_protected = external protected global10// CHECK-PROTECTED: @var_protected = external protected global11// CHECK-DEFAULT: @var_protected = external protected global12__attribute__((visibility("protected"))) extern int var_protected;13// CHECK-HIDDEN: @var_default = external global14// CHECK-PROTECTED: @var_default = external global15// CHECK-DEFAULT: @var_default = external global16__attribute__((visibility("default"))) extern int var_default;17// CHECK-HIDDEN: @var = external hidden global18// CHECK-PROTECTED: @var = external protected global19// CHECK-DEFAULT: @var = external global20extern int var;21 22// CHECK-HIDDEN: declare hidden i32 @func_hidden()23// CHECK-PROTECTED: declare hidden i32 @func_hidden()24// CHECK-DEFAULT: declare hidden i32 @func_hidden()25__attribute__((visibility("hidden"))) int func_hidden(void);26// CHECK-HIDDEN: declare protected i32 @func_protected()27// CHECK-PROTECTED: declare protected i32 @func_protected()28// CHECK-DEFAULT: declare protected i32 @func_protected()29__attribute__((visibility("protected"))) int func_protected(void);30// CHECK-HIDDEN: declare i32 @func_default()31// CHECK-PROTECTED: declare i32 @func_default()32// CHECK-DEFAULT: declare i32 @func_default()33__attribute__((visibility("default"))) int func_default(void);34// CHECK-HIDDEN: declare hidden i32 @func()35// CHECK-PROTECTED: declare protected i32 @func()36// CHECK-DEFAULT: declare i32 @func()37int func(void);38 39int use(void) {40 return var_hidden + var_protected + var_default + var +41 func_hidden() + func_protected() + func_default() + func();42}43