blob: db109dfe469bc7341f9c0cc8d109fec6b95492a9 [file] [log] [blame]
Nick Lewycky308fba52011-05-06 21:09:44 +00001; RUN: llvm-as < %s | llvm-dis | FileCheck %s
Duncan P. N. Exon Smith13f5c582014-08-19 21:08:27 +00002; RUN: verify-uselistorder < %s
Nick Lewycky308fba52011-05-06 21:09:44 +00003; PR9857
4
5define void @f(i8** nocapture %ptr1) {
6; CHECK: define void @f
7entry:
8 br label %here.i
9
10here.i:
11 store i8* blockaddress(@doit, %here), i8** %ptr1, align 8
12; CHECK: blockaddress(@doit, %here)
13 br label %doit.exit
14
15doit.exit:
16 ret void
17}
18
19define void @doit(i8** nocapture %pptr) {
20; CHECK: define void @doit
21entry:
22 br label %here
23
24here:
25 store i8* blockaddress(@doit, %here), i8** %pptr, align 8
26; CHECK: blockaddress(@doit, %here)
27 br label %end
28
29end:
30 ret void
31}
Benjamin Kramer122f5e52012-09-21 14:34:31 +000032
33; PR13895
34define void @doitagain(i8** nocapture %pptr) {
35; CHECK: define void @doitagain
36entry:
37 br label %here
38
39here:
40 store i8* blockaddress(@doit, %here), i8** %pptr, align 8
41; CHECK: blockaddress(@doit, %here)
42 br label %end
43
44end:
45 ret void
46}
Duncan P. N. Exon Smith1d8c9d92014-08-16 01:54:37 +000047
48; Check a blockaddress taken in two separate functions before the referenced
49; function.
50define i8* @take1() {
51 ret i8* blockaddress(@taken, %bb)
52}
53define i8* @take2() {
54 ret i8* blockaddress(@taken, %bb)
55}
56define void @taken() {
57 unreachable
58bb:
59 unreachable
60}