diff options
Diffstat (limited to 'llvm/test/CodeGen/Generic/ipra-transform.ll')
| -rw-r--r-- | llvm/test/CodeGen/Generic/ipra-transform.ll | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Generic/ipra-transform.ll b/llvm/test/CodeGen/Generic/ipra-transform.ll new file mode 100644 index 00000000000..362af881234 --- /dev/null +++ b/llvm/test/CodeGen/Generic/ipra-transform.ll @@ -0,0 +1,32 @@ + +; RUN: llc < %s | FileCheck %s -check-prefix=NOIPRA +; RUN: llc -enable-ipra < %s | FileCheck %s + + +target triple = "x86_64-unknown-unknown" +define void @bar1() { + ret void +} +define preserve_allcc void @foo()#0 { +; Due to preserve_allcc foo() will save some registers at start of foo() +; prefix NOIPRA will verify that. +; NOIPRA-LABEL: foo: +; NOIPRA: pushq %r10 +; NOIPRA-NEXT: pushq %r9 +; NOIPRA-NEXT: pushq %r8 +; NOIPRA: callq bar1 +; When IPRA is present above registers will not be saved and that is verified +; by prefix CHECK. +; CHECK: foo: +; CHECK-NOT: pushq %r10 +; CHECK-NOT: pushq %r9 +; CHECK-NOT: pushq %r8 +; CHECK: callq bar1 + call void @bar1() + call void @bar2() + ret void +} +define void @bar2() { + ret void +} +attributes #0 = {nounwind} |

