Lowers block address. Currently asserts when relocation model is not PIC. Patch by...
[oota-llvm.git] / test / CodeGen / Mips / blockaddr.ll
1 ; RUN: llc -march=mipsel < %s | FileCheck %s
2
3 @reg = common global i8* null, align 4
4
5 define i8* @dummy(i8* %x) nounwind readnone noinline {
6 entry:
7   ret i8* %x
8 }
9
10 ; CHECK: lw  $2, %got($tmp1)($gp)
11 ; CHECK: addiu $4, $2, %lo($tmp1)
12 ; CHECK: lw  $2, %got($tmp2)($gp)
13 ; CHECK: addiu $2, $2, %lo($tmp2)
14 define void @f() nounwind {
15 entry:
16   %call = tail call i8* @dummy(i8* blockaddress(@f, %baz))
17   indirectbr i8* %call, [label %baz, label %foo]
18
19 foo:                                              ; preds = %foo, %entry
20   store i8* blockaddress(@f, %foo), i8** @reg, align 4
21   br label %foo
22
23 baz:                                              ; preds = %entry
24   store i8* null, i8** @reg, align 4
25   ret void
26 }