1 ; Various test cases to ensure basic functionality is working for GCSE
3 ; RUN: llvm-as < %s | opt -gcse
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]
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]
26 define i32 @dominates(i32 %i, i32 %j) {
27 %A = add i32 %i, %j ; <i32> [#uses=0]
31 %B = add i32 %i, %j ; <i32> [#uses=1]
35 define i32 @hascommondominator(i32 %i, i32 %j) {
36 br i1 true, label %BB1, label %BB2
39 %A = add i32 %i, %j ; <i32> [#uses=1]
43 %B = add i32 %i, %j ; <i32> [#uses=1]