source: icGREP/icgrep-devel/llvm-3.8.0.src/test/CodeGen/Generic/addr-label.ll @ 5027

Last change on this file since 5027 was 5027, checked in by cameron, 3 years ago

Upgrade to llvm 3.8

File size: 1.4 KB
Line 
1; RUN: llc %s -o -
2
3;; Reference to a label that gets deleted.
4define i8* @test1() nounwind {
5entry:
6        ret i8* blockaddress(@test1b, %test_label)
7}
8
9define i32 @test1b() nounwind {
10entry:
11        ret i32 -1
12test_label:
13        br label %ret
14ret:
15        ret i32 -1
16}
17
18
19;; Issues with referring to a label that gets RAUW'd later.
20define i32 @test2a() nounwind {
21entry:
22        %target = bitcast i8* blockaddress(@test2b, %test_label) to i8*
23
24        call i32 @test2b(i8* %target)
25
26        ret i32 0
27}
28
29define i32 @test2b(i8* %target) nounwind {
30entry:
31        indirectbr i8* %target, [label %test_label]
32
33test_label:
34; assume some code here...
35        br label %ret
36
37ret:
38        ret i32 -1
39}
40
41; Issues with a BB that gets RAUW'd to another one after references are
42; generated.
43define void @test3(i8** %P, i8** %Q) nounwind {
44entry:
45  store i8* blockaddress(@test3b, %test_label), i8** %P
46  store i8* blockaddress(@test3b, %ret), i8** %Q
47  ret void
48}
49
50define i32 @test3b() nounwind {
51entry:
52        br label %test_label
53test_label:
54        br label %ret
55ret:
56        ret i32 -1
57}
58
59
60; PR6673
61
62define i64 @test4a() {
63        %target = bitcast i8* blockaddress(@test4b, %usermain) to i8*
64        %ret = call i64 @test4b(i8* %target)
65
66        ret i64 %ret
67}
68
69define i64 @test4b(i8* %Code) {
70entry:
71        indirectbr i8* %Code, [label %usermain]
72usermain:
73        br label %label_line_0
74
75label_line_0:
76        br label %label_line_1
77
78label_line_1:
79        %target = ptrtoint i8* blockaddress(@test4b, %label_line_0) to i64
80        ret i64 %target
81}
Note: See TracBrowser for help on using the repository browser.