From d6aa02de1076c801ac41295156a2379637976918 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 28 Jul 2009 01:40:03 +0000 Subject: Teach instcombine to respect and preserve inbounds. Add inbounds to a few tests where it is required for the expected transformation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77290 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/2008-02-04-GEPIdxBug.ll | 4 ++-- test/Transforms/InstCombine/getelementptr-setcc.ll | 12 ++++++------ test/Transforms/InstCombine/getelementptr-seteq.ll | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'test/Transforms') diff --git a/test/Transforms/InstCombine/2008-02-04-GEPIdxBug.ll b/test/Transforms/InstCombine/2008-02-04-GEPIdxBug.ll index 6814e2f..064fbd1 100644 --- a/test/Transforms/InstCombine/2008-02-04-GEPIdxBug.ll +++ b/test/Transforms/InstCombine/2008-02-04-GEPIdxBug.ll @@ -10,7 +10,7 @@ define i32 @main() nounwind { entry: %orientations = alloca [1 x [1 x %struct.x]] ; <[1 x [1 x %struct.x]]*> [#uses=2] %tmp3 = call i32 @puts( i8* getelementptr ([6 x i8]* @.str, i32 0, i32 0) ) nounwind ; [#uses=0] - %tmp45 = getelementptr [1 x [1 x %struct.x]]* %orientations, i32 1, i32 0, i32 0 ; <%struct.x*> [#uses=1] + %tmp45 = getelementptr inbounds [1 x [1 x %struct.x]]* %orientations, i32 1, i32 0, i32 0 ; <%struct.x*> [#uses=1] %orientations62 = getelementptr [1 x [1 x %struct.x]]* %orientations, i32 0, i32 0, i32 0 ; <%struct.x*> [#uses=1] br label %bb10 @@ -18,7 +18,7 @@ bb10: ; preds = %bb10, %entry %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb10 ] ; [#uses=2] %tmp.0.reg2mem.0.rec = mul i32 %indvar, -1 ; [#uses=1] %tmp12.rec = add i32 %tmp.0.reg2mem.0.rec, -1 ; [#uses=1] - %tmp12 = getelementptr %struct.x* %tmp45, i32 %tmp12.rec ; <%struct.x*> [#uses=2] + %tmp12 = getelementptr inbounds %struct.x* %tmp45, i32 %tmp12.rec ; <%struct.x*> [#uses=2] %tmp16 = call i32 (i8*, ...)* @printf( i8* getelementptr ([12 x i8]* @.str1, i32 0, i32 0), %struct.x* %tmp12 ) nounwind ; [#uses=0] %tmp84 = icmp eq %struct.x* %tmp12, %orientations62 ; [#uses=1] %indvar.next = add i32 %indvar, 1 ; [#uses=1] diff --git a/test/Transforms/InstCombine/getelementptr-setcc.ll b/test/Transforms/InstCombine/getelementptr-setcc.ll index 0a6d720..c90390a 100644 --- a/test/Transforms/InstCombine/getelementptr-setcc.ll +++ b/test/Transforms/InstCombine/getelementptr-setcc.ll @@ -2,28 +2,28 @@ ; RUN: not grep getelementptr define i1 @test1(i16* %P, i32 %I, i32 %J) { - %X = getelementptr i16* %P, i32 %I ; [#uses=1] - %Y = getelementptr i16* %P, i32 %J ; [#uses=1] + %X = getelementptr inbounds i16* %P, i32 %I ; [#uses=1] + %Y = getelementptr inbounds i16* %P, i32 %J ; [#uses=1] %C = icmp ult i16* %X, %Y ; [#uses=1] ret i1 %C } define i1 @test2(i16* %P, i32 %I) { - %X = getelementptr i16* %P, i32 %I ; [#uses=1] + %X = getelementptr inbounds i16* %P, i32 %I ; [#uses=1] %C = icmp ult i16* %X, %P ; [#uses=1] ret i1 %C } define i32 @test3(i32* %P, i32 %A, i32 %B) { - %tmp.4 = getelementptr i32* %P, i32 %A ; [#uses=1] - %tmp.9 = getelementptr i32* %P, i32 %B ; [#uses=1] + %tmp.4 = getelementptr inbounds i32* %P, i32 %A ; [#uses=1] + %tmp.9 = getelementptr inbounds i32* %P, i32 %B ; [#uses=1] %tmp.10 = icmp eq i32* %tmp.4, %tmp.9 ; [#uses=1] %tmp.11 = zext i1 %tmp.10 to i32 ; [#uses=1] ret i32 %tmp.11 } define i32 @test4(i32* %P, i32 %A, i32 %B) { - %tmp.4 = getelementptr i32* %P, i32 %A ; [#uses=1] + %tmp.4 = getelementptr inbounds i32* %P, i32 %A ; [#uses=1] %tmp.6 = icmp eq i32* %tmp.4, %P ; [#uses=1] %tmp.7 = zext i1 %tmp.6 to i32 ; [#uses=1] ret i32 %tmp.7 diff --git a/test/Transforms/InstCombine/getelementptr-seteq.ll b/test/Transforms/InstCombine/getelementptr-seteq.ll index 05cec62..2cd6f77 100644 --- a/test/Transforms/InstCombine/getelementptr-seteq.ll +++ b/test/Transforms/InstCombine/getelementptr-seteq.ll @@ -5,8 +5,8 @@ %S = type { i32, [ 100 x i32] } define i1 @test(i64 %X, %S* %P) { - %A = getelementptr %S* %P, i32 0, i32 1, i64 %X - %B = getelementptr %S* %P, i32 0, i32 0 + %A = getelementptr inbounds %S* %P, i32 0, i32 1, i64 %X + %B = getelementptr inbounds %S* %P, i32 0, i32 0 %C = icmp eq i32* %A, %B ret i1 %C } -- cgit v1.1