Test that prune-eh doesn't make deductions based
[oota-llvm.git] / test / Transforms / GCSE / gcsetests.ll
1 ; Various test cases to ensure basic functionality is working for GCSE
2
3 ; RUN: llvm-as < %s | opt -gcse
4
5 define void @testinsts(i32 %i, i32 %j, i32* %p) {
6         %A = bitcast i32 %i to i32              ; <i32> [#uses=0]
7         %B = bitcast i32 %i to i32              ; <i32> [#uses=0]
8         %C = shl i32 %i, 1              ; <i32> [#uses=0]
9         %D = shl i32 %i, 1              ; <i32> [#uses=0]
10         %E = getelementptr i32* %p, i64 12              ; <i32*> [#uses=0]
11         %F = getelementptr i32* %p, i64 12              ; <i32*> [#uses=0]
12         %G = getelementptr i32* %p, i64 13              ; <i32*> [#uses=0]
13         ret void
14 }
15
16 ; Test different combinations of domination properties...
17 define void @sameBBtest(i32 %i, i32 %j) {
18         %A = add i32 %i, %j             ; <i32> [#uses=1]
19         %B = add i32 %i, %j             ; <i32> [#uses=1]
20         %C = xor i32 %A, -1             ; <i32> [#uses=0]
21         %D = xor i32 %B, -1             ; <i32> [#uses=0]
22         %E = xor i32 %j, -1             ; <i32> [#uses=0]
23         ret void
24 }
25
26 define i32 @dominates(i32 %i, i32 %j) {
27         %A = add i32 %i, %j             ; <i32> [#uses=0]
28         br label %BB2
29
30 BB2:            ; preds = %0
31         %B = add i32 %i, %j             ; <i32> [#uses=1]
32         ret i32 %B
33 }
34
35 define i32 @hascommondominator(i32 %i, i32 %j) {
36         br i1 true, label %BB1, label %BB2
37
38 BB1:            ; preds = %0
39         %A = add i32 %i, %j             ; <i32> [#uses=1]
40         ret i32 %A
41
42 BB2:            ; preds = %0
43         %B = add i32 %i, %j             ; <i32> [#uses=1]
44         ret i32 %B
45 }
46