File: fsplit_stack.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 (37 lines) | stat: -rw-r--r-- 987 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
30
31
32
33
34
35
36
37
// Test --fsplit-stack

// REQUIRES: target_X86

// RUN: %ldc -mtriple=x86_64-linux --fsplit-stack -c --output-ll -of=%t.ll %s && FileCheck --check-prefix=IR  %s < %t.ll
// RUN: %ldc -mtriple=x86_64-linux --fsplit-stack -c --output-s  -of=%t.s  %s && FileCheck --check-prefix=ASM %s < %t.s

import ldc.attributes;

// Extern C disables mangling, for easier function name matching.
extern (C):

// IR-LABEL: define{{.*}} @foofoofoofoo
// IR-SAME: #[[ATTR:[0-9]+]]
// ASM-LABEL: foofoofoofoo
// ASM: callq  __morestack
// ASM-LABEL: .cfi_endproc
void foofoofoofoo()
{
    int[100] a;
}

// IR-LABEL: define{{.*}} @g_nosplitstack_g
// IR-SAME: #[[ATTR_DISABLED:[0-9]+]]
// ASM-LABEL: g_nosplitstack_g
// ASM-NOT: callq  __morestack
// ASM-LABEL: .cfi_endproc
@noSplitStack
void g_nosplitstack_g()
{
    int[100] a;
}


// IR-NOT: attributes #[[ATTR_DISABLED]] ={{.*}}split-stack
// IR-DAG: attributes #[[ATTR]] ={{.*}}split-stack
// IR-NOT: attributes #[[ATTR_DISABLED]] ={{.*}}split-stack