File: export.d

package info (click to toggle)
ldc 1%3A1.30.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 59,248 kB
  • sloc: cpp: 61,598; ansic: 14,545; sh: 1,014; makefile: 972; asm: 510; objc: 135; exp: 48; python: 12
file content (43 lines) | stat: -rw-r--r-- 946 bytes parent folder | download | duplicates (2)
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
// RUN: %ldc -output-ll -of=%t.ll %s
// RUN: FileCheck %s < %t.ll

// REQUIRES: Windows

export
{
    // non-TLS:
    __gshared
    {
        // CHECK: @{{.*}}exportedGlobal{{.*}} = dllexport
        void* exportedGlobal;

        // CHECK: @{{.*}}importedGlobal{{.*}} = external dllimport
        extern void* importedGlobal;
    }

    // TLS: unsupported => linker errors
    version (all)
    {
        // CHECK: @{{.*}}exportedTlsGlobal{{.*}} = thread_local
        // CHECK-NOT: dllexport
        void* exportedTlsGlobal;

        // CHECK: @{{.*}}importedTlsGlobal{{.*}} = external thread_local
        // CHECK-NOT: dllimport
        extern void* importedTlsGlobal;
    }

    // CHECK: define dllexport {{.*}}_D6export11exportedFooFZv
    void exportedFoo() {}

    // CHECK: declare
    // CHECK-NOT: dllimport
    // CHECK-SAME: _D6export11importedFooFZv
    void importedFoo();
}

void bar()
{
    exportedFoo();
    importedFoo();
}