blob: e370978a5d74b6c92199b17424c8cf2b68807d9e [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -adce | llvm-dis | \
2; RUN: not grep {call void %f1}
3; END.
4
5declare void %f1()
6declare void %f2()
7declare void %f3()
8declare void %f4()
9
10implementation
11
12int %test1(int %X, bool %D) {
13E:
14 %C = seteq int %X, 0
15 br bool %C, label %T, label %F
16T:
17 br bool %C, label %B, label %A
18A:
19 call void %f1()
20 br bool %D, label %T, label %F
21B:
22 call void %f2()
23 ret int 345
24F:
25 call void %f3()
26 ret int 123
27}
28
29int %test2(int %X, bool %D) {
30E:
31 %C = seteq int %X, 0
32 br bool %C, label %T, label %F
33T:
34 %P = phi bool [true, %E], [%C, %A]
35 br bool %P, label %B, label %A
36A:
37 call void %f1()
38 br bool %D, label %T, label %F
39B:
40 call void %f2()
41 ret int 345
42F:
43 call void %f3()
44 ret int 123
45}
46
47int %test3(int %X, bool %D, int* %AP, int* %BP) {
48E:
49 %C = seteq int %X, 0
50 br bool %C, label %T, label %F
51T:
52 call void %f3() ;; Inst in block.
53 %XX = load int* %AP
54 store int %XX, int* %BP
55 br bool %C, label %B, label %A
56A:
57 call void %f1()
58 br bool %D, label %T, label %F
59B:
60 call void %f2()
61 ret int 345
62F:
63 call void %f3()
64 ret int 123
65}