File: llvm_used_1.d

package info (click to toggle)
ldc 1%3A1.40.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, 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 (29 lines) | stat: -rw-r--r-- 889 bytes parent folder | download
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
// Test that llvm.used is emitted correctly when multiple D modules are compiled into one LLVM module.

// REQUIRES: target_X86

// Explicitly use OS X triple, so that llvm.used is used for moduleinfo globals.
// RUN: %ldc -c -output-ll -O3 %S/inputs/module_ctor.d %s -of=%t.ll -mtriple=x86_64-apple-macosx && FileCheck --check-prefix=LLVM %s < %t.ll

// RUN: %ldc -O3 %S/inputs/module_ctor.d -run %s | FileCheck --check-prefix=EXECUTE %s

// There was a bug where llvm.used was emitted more than once, whose symptom was that suffixed versions would appear: e.g. `@llvm.used.3`.
// Expect 2 llvm.used entries, for both ModuleInfo refs.
// LLVM-NOT: @llvm.used.
// LLVM: @llvm.used = appending global [2 x ptr]
// LLVM-NOT: @llvm.used.

// EXECUTE: ctor
// EXECUTE: main
// EXECUTE: dtor

import core.stdc.stdio;

static ~this()
{
    puts("dtor\n");
}

void main() {
    puts("main\n");
}