1 ; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 | FileCheck --check-prefix=DAG %s 2 ; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 -O0 | FileCheck --check-prefix=FAST %s 3 4 %struct.s1 = type { double, float } 5 6 define void @g1() nounwind { 7 entry: 8 %tmp = alloca %struct.s1, align 4 9 call void @f(%struct.s1* inreg sret %tmp, i32 inreg 41, i32 inreg 42, i32 43) 10 ret void 11 ; DAG-LABEL: g1: 12 ; DAG: subl $[[AMT:.*]], %esp 13 ; DAG-NEXT: $43, (%esp) 14 ; DAG-NEXT: leal 16(%esp), %eax 15 ; DAG-NEXT: movl $41, %edx 16 ; DAG-NEXT: movl $42, %ecx 17 ; DAG-NEXT: calll f 18 ; DAG-NEXT: addl $[[AMT]], %esp 19 ; DAG-NEXT: ret 20 21 ; FAST-LABEL: g1: 22 ; FAST: subl $[[AMT:.*]], %esp 23 ; FAST-NEXT: leal 8(%esp), %eax 24 ; FAST-NEXT: movl $41, %edx 25 ; FAST-NEXT: movl $42, %ecx 26 ; FAST: $43, (%esp) 27 ; FAST: calll f 28 ; FAST-NEXT: addl $[[AMT]], %esp 29 ; FAST: ret 30 } 31 32 declare void @f(%struct.s1* inreg sret, i32 inreg, i32 inreg, i32) 33 34 %struct.s2 = type {} 35 36 define void @g2(%struct.s2* inreg sret %agg.result) nounwind { 37 entry: 38 ret void 39 ; DAG: g2 40 ; DAG-NOT: ret $4 41 ; DAG: .size g2 42 43 ; FAST: g2 44 ; FAST-NOT: ret $4 45 ; FAST: .size g2 46 } 47