File: export.d

package info (click to toggle)
ldc 1%3A1.40.0-5
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 63,308 kB
  • sloc: cpp: 85,368; ansic: 21,877; makefile: 1,705; sh: 1,018; asm: 584; 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();
}