47 lines · plain
1; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 | FileCheck --check-prefix=DAG %s2; RUN: llc < %s -mtriple=i686-pc-linux -mcpu=corei7 -O0 | FileCheck --check-prefix=FAST %s3 4%struct.s1 = type { double, float }5 6define void @g1() nounwind {7entry:8 %tmp = alloca %struct.s1, align 49 call void @f(ptr inreg sret(%struct.s1) %tmp, i32 inreg 41, i32 inreg 42, i32 43)10 ret void11 ; DAG-LABEL: g1:12 ; DAG: subl $[[AMT:.*]], %esp13 ; DAG-NEXT: $43, (%esp)14 ; DAG-NEXT: leal 16(%esp), %eax15 ; DAG-NEXT: movl $41, %edx16 ; DAG-NEXT: movl $42, %ecx17 ; DAG-NEXT: calll f18 ; DAG-NEXT: addl $[[AMT]], %esp19 ; DAG-NEXT: ret20 21 ; FAST-LABEL: g1:22 ; FAST: subl $[[AMT:.*]], %esp23 ; FAST-NEXT: leal 16(%esp), %eax24 ; FAST-NEXT: movl $41, %edx25 ; FAST-NEXT: movl $42, %ecx26 ; FAST: $43, (%esp)27 ; FAST: calll f28 ; FAST-NEXT: addl $[[AMT]], %esp29 ; FAST: ret30}31 32declare void @f(ptr inreg sret(%struct.s1), i32 inreg, i32 inreg, i32)33 34%struct.s2 = type {}35 36define void @g2(ptr inreg sret(%struct.s2) %agg.result) nounwind {37entry:38 ret void39 ; DAG: g240 ; DAG-NOT: ret $441 ; DAG: .size g242 43 ; FAST: g244 ; FAST-NOT: ret $445 ; FAST: .size g246}47