xref: /llvm-project/clang/test/InterfaceStubs/visibility.cpp (revision 74742147ee27659dc3b0bc713d61ea9218bf29d0)
1 // REQUIRES: x86-registered-target
2 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
3 // RUN: -fvisibility=hidden  %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s
4 
5 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \
6 // RUN: -fvisibility=hidden %s | FileCheck --check-prefix=CHECK-CMD-HIDDEN %s
7 
8 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %s | \
9 // RUN: FileCheck --check-prefix=CHECK-CMD %s
10 
11 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %s | \
12 // RUN: FileCheck --check-prefix=CHECK-CMD %s
13 
14 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %s | \
15 // RUN: FileCheck --check-prefix=CHECK-CMD2 %s
16 
17 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs %s | \
18 // RUN: FileCheck --check-prefix=CHECK-CMD2 %s
19 
20 // RUN: %clang -target x86_64-unknown-linux-gnu -o - -c %s | llvm-readelf -s - 2>&1 | \
21 // RUN: FileCheck -check-prefix=CHECK-SYMBOLS %s
22 
23 // Always Be Hidden:
24 // CHECK-CMD-HIDDEN-NOT: _Z6hiddenv
25 // CHECK-CMD2-NOT: _Z6hiddenv
hidden()26 __attribute__((visibility("hidden"))) void hidden() {}
27 
28 // Always Be Visible:
29 // CHECK-CMD-HIDDEN: _Z9nothiddenv
30 // CHECK-CMD-DAG: _Z9nothiddenv
nothidden()31 __attribute__((visibility("default"))) void nothidden() {}
32 
33 // Do Whatever -fvisibility says:
34 // CHECK-CMD-HIDDEN-NOT: _Z10cmdVisiblev
35 // CHECK-CMD-DAG: _Z10cmdVisiblev
cmdVisible()36 void cmdVisible() {}
37 
38 // CHECK-SYMBOLS-DAG: DEFAULT    {{.*}} _Z10cmdVisiblev
39 // CHECK-SYMBOLS-DAG: HIDDEN     {{.*}} _Z6hiddenv
40 // CHECK-SYMBOLS-DAG: DEFAULT    {{.*}} _Z9nothiddenv
41