Report abuse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
declare i64 @harbour__print(i64)
declare i64 @harbour__minus(i64, i64)
declare i64 @harbour__times(i64, i64)
define i64 @harbour__first() {
first:
br i1 true, label %true_basic_block, label %merge_basic_block
true_basic_block: %call = call i64 @harbour__print(i64 1) %call1 = call i64 @harbour__print(i64 11) %call2 = call i64 @harbour__print(i64 111) br label %merge_basic_block
merge_basic_block: %if_phi = phi i64 [ %call2, %true_basic_block ], [ 2, %first ] ret i64 123
}
define i64 @harbour__second() {
second:
br i1 true, label %true_basic_block, label %false_basic_block
true_basic_block: %call = call i64 @harbour__print(i64 1) %call1 = call i64 @harbour__print(i64 11) %call2 = call i64 @harbour__print(i64 111) br label %merge_basic_block
false_basic_block: %call3 = call i64 @harbour__print(i64 2) %call4 = call i64 @harbour__print(i64 22) %call5 = call i64 @harbour__print(i64 222) br label %merge_basic_block
merge_basic_block: %if_phi = phi i64 [ %call2, %true_basic_block ], [ %call5, %false_basic_block ] ret i64 123
}
define i64 @harbour__main() {
main:
%call = call i64 @harbour__first() %call1 = call i64 @harbour__second() ret i64 %call1
}
|