52 lines · plain
1 2; RUN: llc < %s | FileCheck %s -check-prefix=NOIPRA3; RUN: llc -enable-ipra < %s | FileCheck %s4 5 6target triple = "x86_64-unknown-unknown"7define void @bar1() {8 ret void9}10define 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 %r1015; NOIPRA-NEXT: pushq %r916; NOIPRA-NEXT: pushq %r817; NOIPRA: callq bar118; When IPRA is present above registers will not be saved and that is verified19; by prefix CHECK.20; CHECK: foo:21; CHECK-NOT: pushq %r1022; CHECK-NOT: pushq %r923; CHECK-NOT: pushq %r824; CHECK: callq bar125 call void @bar1()26 call void @bar2()27 ret void28}29define void @bar2() {30 ret void31}32 33define preserve_nonecc void @foo2()#0 {34; Due to preserve_nonecc foo2() will save above registers no matter IPRA is35; present or not.36; NOIPRA-LABEL: foo2:37; NOIPRA-NOT: pushq %r1038; NOIPRA-NOT: pushq %r939; NOIPRA-NOT: pushq %r840; NOIPRA: callq bar141; CHECK: foo2:42; CHECK-NOT: pushq %r1043; CHECK-NOT: pushq %r944; CHECK-NOT: pushq %r845; CHECK: callq bar146 call void @bar1()47 call void @bar2()48 ret void49}50 51attributes #0 = {nounwind}52