blob: 56aeb3a34364b624ea6df76ff953f1a796f92872 [file] [log] [blame]
Dan Gohmane695de02010-07-10 22:42:12 +00001; RUN: llc -march=x86 -relocation-model=pic < %s
Dan Gohman84023e02010-07-10 09:00:22 +00002
3; This should use flds to set the return value.
4; CHECK: test0:
5; CHECK: flds
6; CHECK: ret
7@G = external global float
8define float @test0() nounwind {
9 %t = load float* @G
10 ret float %t
11}
12
13; This should pop 4 bytes on return.
14; CHECK: test1:
15; CHECK: ret $4
16define void @test1({i32, i32, i32, i32}* sret %p) nounwind {
17 store {i32, i32, i32, i32} zeroinitializer, {i32, i32, i32, i32}* %p
18 ret void
19}
20
21; Properly initialize the pic base.
22; CHECK: test2:
23; CHECK-NOT: HHH
24; CHECK: call{{.*}}L2$pb
25; CHECK-NEXT: L2$pb:
26; CHECK-NEXT: pop
27; CHECK: HHH
28; CHECK: ret
29@HHH = external global i32
30define i32 @test2() nounwind {
Dan Gohmane695de02010-07-10 22:42:12 +000031 %t = load i32* @HHH
Dan Gohman84023e02010-07-10 09:00:22 +000032 ret i32 %t
33}