1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
// 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() {}
}
}
|