blob: 7cfa929135786d5649dff2253d8f3d91a4f5b56b [file] [log] [blame]
Reid Klecknerf5b76512014-01-31 23:50:57 +00001; 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(%frame* inalloca %a)
8
9declare void @Foo_ctor(%Foo* %this)
10
11define void @g() {
12entry:
David Majnemerc4ab61c2014-03-09 06:41:58 +000013 %args = alloca inalloca %frame
Reid Klecknerf5b76512014-01-31 23:50:57 +000014 %c = getelementptr %frame* %args, i32 0, i32 2
15; CHECK: movl $20, %eax
16; CHECK: calll __chkstk
17; CHECK: movl %esp,
18 call void @Foo_ctor(%Foo* %c)
19; CHECK: leal 12(%{{.*}}),
20; CHECK: subl $4, %esp
21; CHECK: calll _Foo_ctor
22; CHECK: addl $4, %esp
23 %b = getelementptr %frame* %args, i32 0, i32 1
24 store i32 42, i32* %b
25; CHECK: movl $42,
26 %a = getelementptr %frame* %args, i32 0, i32 0
27 call void @Foo_ctor(%Foo* %a)
28; CHECK: subl $4, %esp
29; CHECK: calll _Foo_ctor
30; CHECK: addl $4, %esp
31 call void @f(%frame* inalloca %args)
32; CHECK: calll _f
33 ret void
34}