|  |  | 
|  | ; 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} |