brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · fafc7d9 Raw
63 lines · plain
1; RUN: llc < %s -mtriple=i686-pc-win32 | FileCheck %s2 3%Foo = type { i32, i32 }4 5declare void @f(ptr inalloca(%Foo) %b)6 7define void @a() {8; CHECK-LABEL: _a:9entry:10  %b = alloca inalloca %Foo11; CHECK: pushl   %eax12; CHECK: pushl   %eax13  %f2 = getelementptr %Foo, ptr %b, i32 0, i32 114  store i32 13, ptr %b15  store i32 42, ptr %f216; CHECK: movl %esp, %eax17; CHECK: movl    $13, (%eax)18; CHECK: movl    $42, 4(%eax)19  call void @f(ptr inalloca(%Foo) %b)20; CHECK: calll   _f21  ret void22}23 24declare void @inreg_with_inalloca(i32 inreg %a, ptr inalloca(%Foo) %b)25 26define void @b() {27; CHECK-LABEL: _b:28entry:29  %b = alloca inalloca %Foo30; CHECK: pushl   %eax31; CHECK: pushl   %eax32  %f2 = getelementptr %Foo, ptr %b, i32 0, i32 133  store i32 13, ptr %b34  store i32 42, ptr %f235; CHECK: movl %esp, %eax36; CHECK: movl    $13, (%eax)37; CHECK: movl    $42, 4(%eax)38  call void @inreg_with_inalloca(i32 inreg 1, ptr inalloca(%Foo) %b)39; CHECK: movl    $1, %eax40; CHECK: calll   _inreg_with_inalloca41  ret void42}43 44declare x86_thiscallcc void @thiscall_with_inalloca(ptr %a, ptr inalloca(%Foo) %b)45 46define void @c() {47; CHECK-LABEL: _c:48entry:49  %b = alloca inalloca %Foo50; CHECK: pushl   %eax51; CHECK: pushl   %eax52  %f2 = getelementptr %Foo, ptr %b, i32 0, i32 153  store i32 13, ptr %b54  store i32 42, ptr %f255; CHECK: movl %esp, %eax56; CHECK-DAG: movl    $13, (%eax)57; CHECK-DAG: movl    $42, 4(%eax)58  call x86_thiscallcc void @thiscall_with_inalloca(ptr null, ptr inalloca(%Foo) %b)59; CHECK-DAG: xorl    %ecx, %ecx60; CHECK: calll   _thiscall_with_inalloca61  ret void62}63