[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Bitcode / blockaddress.ll
blobdb109dfe469bc7341f9c0cc8d109fec6b95492a9
1 ; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2 ; RUN: verify-uselistorder < %s
3 ; PR9857
5 define void @f(i8** nocapture %ptr1) {
6 ; CHECK: define void @f
7 entry:
8   br label %here.i
10 here.i:
11   store i8* blockaddress(@doit, %here), i8** %ptr1, align 8
12 ; CHECK: blockaddress(@doit, %here)
13   br label %doit.exit
15 doit.exit:
16   ret void
19 define void @doit(i8** nocapture %pptr) {
20 ; CHECK: define void @doit
21 entry:
22   br label %here
24 here:
25   store i8* blockaddress(@doit, %here), i8** %pptr, align 8
26 ; CHECK: blockaddress(@doit, %here)
27   br label %end
29 end:
30   ret void
33 ; PR13895
34 define void @doitagain(i8** nocapture %pptr) {
35 ; CHECK: define void @doitagain
36 entry:
37   br label %here
39 here:
40   store i8* blockaddress(@doit, %here), i8** %pptr, align 8
41 ; CHECK: blockaddress(@doit, %here)
42   br label %end
44 end:
45   ret void
48 ; Check a blockaddress taken in two separate functions before the referenced
49 ; function.
50 define i8* @take1() {
51   ret i8* blockaddress(@taken, %bb)
53 define i8* @take2() {
54   ret i8* blockaddress(@taken, %bb)
56 define void @taken() {
57   unreachable
58 bb:
59   unreachable