]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/X86/ipra-transform.ll
Vendor import of llvm trunk r291274:
[FreeBSD/FreeBSD.git] / test / CodeGen / X86 / ipra-transform.ll
1
2 ; RUN: llc < %s | FileCheck %s -check-prefix=NOIPRA
3 ; RUN: llc -enable-ipra < %s | FileCheck %s
4
5
6 target triple = "x86_64-unknown-unknown"
7 define void @bar1() {
8         ret void
9 }
10 define preserve_allcc void @foo()#0 {
11 ; Due to preserve_allcc foo() will save some registers at start of foo()
12 ; prefix NOIPRA will verify that.
13 ; NOIPRA-LABEL: foo:
14 ; NOIPRA: pushq %r10
15 ; NOIPRA-NEXT: pushq %r9
16 ; NOIPRA-NEXT: pushq %r8
17 ; NOIPRA: callq bar1
18 ; When IPRA is present above registers will not be saved and that is verified
19 ; by prefix CHECK.
20 ; CHECK: foo:
21 ; CHECK-NOT: pushq %r10
22 ; CHECK-NOT: pushq %r9
23 ; CHECK-NOT: pushq %r8
24 ; CHECK: callq bar1
25         call void @bar1()
26         call void @bar2()
27         ret void
28 }
29 define void @bar2() {
30         ret void
31 }
32 attributes #0 = {nounwind}