mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-08 20:06:03 +03:00

To hide a symbol in the sense of making it DSO-local. An `export` visibility is stronger and overrides the UDA. On non-Windows, also newly hide symbols (without `export`) with linkonce_odr etc. linkage.
44 lines
1.2 KiB
D
44 lines
1.2 KiB
D
// Non-Windows: test generated IR for -fvisibility / `export` / @hidden combinations.
|
|
|
|
// UNSUPPORTED: Windows
|
|
|
|
// RUN: %ldc -fvisibility=public -output-ll -of=%t_public.ll %s
|
|
// RUN: FileCheck %s --check-prefix=PUBLIC --check-prefix=COMMON < %t_public.ll
|
|
|
|
// RUN: %ldc -fvisibility=hidden -output-ll -of=%t_hidden.ll %s
|
|
// RUN: FileCheck %s --check-prefix=HIDDEN --check-prefix=COMMON < %t_hidden.ll
|
|
|
|
import ldc.attributes : hidden;
|
|
|
|
extern(C):
|
|
|
|
export
|
|
{
|
|
// COMMON-DAG: @exportedGlobal = global i32
|
|
__gshared int exportedGlobal;
|
|
// COMMON-DAG: define void @exportedFunc()
|
|
void exportedFunc() {}
|
|
}
|
|
|
|
// PUBLIC-DAG: @global = global i32
|
|
// HIDDEN-DAG: @global = hidden global i32
|
|
__gshared int global;
|
|
// PUBLIC-DAG: define void @func()
|
|
// HIDDEN-DAG: define hidden void @func()
|
|
void func() {}
|
|
|
|
@hidden
|
|
{
|
|
// COMMON-DAG: @hiddenGlobal = hidden global i32
|
|
__gshared int hiddenGlobal;
|
|
// COMMON-DAG: define hidden void @hiddenFunc()
|
|
void hiddenFunc() {}
|
|
|
|
export
|
|
{
|
|
// COMMON-DAG: @exportedHiddenGlobal = global i32
|
|
__gshared int exportedHiddenGlobal;
|
|
// COMMON-DAG: define void @exportedHiddenFunc()
|
|
void exportedHiddenFunc() {}
|
|
}
|
|
}
|