1; RUN: llc < %s -mtriple=i686-pc-win32 | FileCheck %s 2 3%Foo = type { i32, i32 } 4 5%frame = type { %Foo, i32, %Foo } 6 7declare void @f(ptr inalloca(%frame) %a) 8 9declare void @Foo_ctor(ptr %this) 10 11define void @g() { 12entry: 13 %args = alloca inalloca %frame 14 %c = getelementptr %frame, ptr %args, i32 0, i32 2 15; CHECK: pushl %eax 16; CHECK: subl $16, %esp 17; CHECK: movl %esp, 18 call void @Foo_ctor(ptr %c) 19; CHECK: leal 12(%{{.*}}), 20; CHECK-NEXT: pushl 21; CHECK-NEXT: calll _Foo_ctor 22; CHECK: addl $4, %esp 23 %b = getelementptr %frame, ptr %args, i32 0, i32 1 24 store i32 42, ptr %b 25; CHECK: movl $42, 26 call void @Foo_ctor(ptr %args) 27; CHECK-NEXT: pushl 28; CHECK-NEXT: calll _Foo_ctor 29; CHECK: addl $4, %esp 30 call void @f(ptr inalloca(%frame) %args) 31; CHECK: calll _f 32 ret void 33} 34