1 ; RUN: llc < %s -mtriple=i686-pc-win32 | FileCheck %s
3 %Foo = type { i32, i32 }
5 declare void @f(%Foo* inalloca %b)
10 %b = alloca inalloca %Foo
11 ; CHECK: movl $8, %eax
12 ; CHECK: calll __chkstk
13 %f1 = getelementptr %Foo, %Foo* %b, i32 0, i32 0
14 %f2 = getelementptr %Foo, %Foo* %b, i32 0, i32 1
15 store i32 13, i32* %f1
16 store i32 42, i32* %f2
17 ; CHECK: movl $13, (%esp)
18 ; CHECK: movl $42, 4(%esp)
19 call void @f(%Foo* inalloca %b)
24 declare void @inreg_with_inalloca(i32 inreg %a, %Foo* inalloca %b)
29 %b = alloca inalloca %Foo
30 ; CHECK: movl $8, %eax
31 ; CHECK: calll __chkstk
32 %f1 = getelementptr %Foo, %Foo* %b, i32 0, i32 0
33 %f2 = getelementptr %Foo, %Foo* %b, i32 0, i32 1
34 store i32 13, i32* %f1
35 store i32 42, i32* %f2
36 ; CHECK: movl $13, (%esp)
37 ; CHECK: movl $42, 4(%esp)
38 call void @inreg_with_inalloca(i32 inreg 1, %Foo* inalloca %b)
39 ; CHECK: movl $1, %eax
40 ; CHECK: calll _inreg_with_inalloca
44 declare x86_thiscallcc void @thiscall_with_inalloca(i8* %a, %Foo* inalloca %b)
49 %b = alloca inalloca %Foo
50 ; CHECK: movl $8, %eax
51 ; CHECK: calll __chkstk
52 %f1 = getelementptr %Foo, %Foo* %b, i32 0, i32 0
53 %f2 = getelementptr %Foo, %Foo* %b, i32 0, i32 1
54 store i32 13, i32* %f1
55 store i32 42, i32* %f2
56 ; CHECK-DAG: movl $13, (%esp)
57 ; CHECK-DAG: movl $42, 4(%esp)
58 call x86_thiscallcc void @thiscall_with_inalloca(i8* null, %Foo* inalloca %b)
59 ; CHECK-DAG: xorl %ecx, %ecx
60 ; CHECK: calll _thiscall_with_inalloca