diff options
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/IndVarSimplify/max-pointer.ll | 106 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstCombine/add2.ll | 24 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstCombine/add3.ll | 21 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstCombine/cast_ptr.ll | 12 |
4 files changed, 33 insertions, 130 deletions
diff --git a/llvm/test/Transforms/IndVarSimplify/max-pointer.ll b/llvm/test/Transforms/IndVarSimplify/max-pointer.ll index ba2b2fa8348..2ee08dbc38b 100644 --- a/llvm/test/Transforms/IndVarSimplify/max-pointer.ll +++ b/llvm/test/Transforms/IndVarSimplify/max-pointer.ll @@ -22,58 +22,6 @@ return: ; preds = %bb2 ret void } -define void @bar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind { -entry: - %str2Ptr = inttoptr i64 %s to i8* - %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - -define void @qux(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind { -entry: - %str1Ptr = inttoptr i64 %t to i8* - %str2Ptr = inttoptr i64 %s to i8* - %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - -define void @vor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind { -entry: - %str1Ptr = inttoptr i64 %t to i8* - %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - define void @sfoo(i8* %str1Ptr, i8* %str2Ptr, i8* %inLastBytePtr) nounwind { entry: %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] @@ -89,57 +37,3 @@ bb2: ; preds = %bb2, %entry return: ; preds = %bb2 ret void } - -define void @sbar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind { -entry: - %str2Ptr = inttoptr i64 %s to i8* - %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - -define void @squx(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind { -entry: - %str1Ptr = inttoptr i64 %t to i8* - %str2Ptr = inttoptr i64 %s to i8* - %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - -define void @svor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind { -entry: - %str1Ptr = inttoptr i64 %t to i8* - %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1] - %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1] - br label %bb2 - -bb2: ; preds = %bb2, %entry - %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1] - %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2] - %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0] - br i1 false, label %bb2, label %return - -return: ; preds = %bb2 - ret void -} - - diff --git a/llvm/test/Transforms/InstCombine/add2.ll b/llvm/test/Transforms/InstCombine/add2.ll index 161d56b40b5..cd67d96a01a 100644 --- a/llvm/test/Transforms/InstCombine/add2.ll +++ b/llvm/test/Transforms/InstCombine/add2.ll @@ -1,9 +1,4 @@ -; RUN: llvm-as < %s | opt -instcombine | llvm-dis | \ -; RUN: grep -v OK | not grep add - -;; Target triple for gep raising case below. -target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" -target triple = "i686-apple-darwin8" +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep add define i64 @test1(i64 %A, i32 %B) { %tmp12 = zext i32 %B to i64 @@ -13,23 +8,6 @@ define i64 @test1(i64 %A, i32 %B) { ret i64 %tmp6 } -; PR1795 -define void @test2(i32 %.val24) { -EntryBlock: - add i32 %.val24, -12 - inttoptr i32 %0 to i32* - store i32 1, i32* %1 - add i32 %.val24, -16 - inttoptr i32 %2 to i32* - getelementptr i32* %3, i32 1 - load i32* %4 - tail call i32 @callee( i32 %5 ) - ret void -} - -declare i32 @callee(i32) - - define i32 @test3(i32 %A) { %B = and i32 %A, 7 %C = and i32 %A, 32 diff --git a/llvm/test/Transforms/InstCombine/add3.ll b/llvm/test/Transforms/InstCombine/add3.ll new file mode 100644 index 00000000000..55e7ec7a1db --- /dev/null +++ b/llvm/test/Transforms/InstCombine/add3.ll @@ -0,0 +1,21 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep inttoptr | count 2 + +;; Target triple for gep raising case below. +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" +target triple = "i686-apple-darwin8" + +; PR1795 +define void @test2(i32 %.val24) { +EntryBlock: + add i32 %.val24, -12 + inttoptr i32 %0 to i32* + store i32 1, i32* %1 + add i32 %.val24, -16 + inttoptr i32 %2 to i32* + getelementptr i32* %3, i32 1 + load i32* %4 + tail call i32 @callee( i32 %5 ) + ret void +} + +declare i32 @callee(i32) diff --git a/llvm/test/Transforms/InstCombine/cast_ptr.ll b/llvm/test/Transforms/InstCombine/cast_ptr.ll index fd600a88304..9b87ed094ea 100644 --- a/llvm/test/Transforms/InstCombine/cast_ptr.ll +++ b/llvm/test/Transforms/InstCombine/cast_ptr.ll @@ -1,8 +1,15 @@ ; Tests to make sure elimination of casts is working correctly -; RUN: llvm-as < %s | opt -instcombine | llvm-dis | notcast +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | FileCheck %s target datalayout = "p:32:32" +; This shouldn't convert to getelementptr because the relationship +; between the arithmetic and the layout of allocated memory is +; entirely unknown. +; CHECK: @test1 +; CHECK: ptrtoint +; CHECK: add +; CHECK: inttoptr define i8* @test1(i8* %t) { %tmpc = ptrtoint i8* %t to i32 ; <i32> [#uses=1] %tmpa = add i32 %tmpc, 32 ; <i32> [#uses=1] @@ -10,6 +17,9 @@ define i8* @test1(i8* %t) { ret i8* %tv } +; These casts should be folded away. +; CHECK: @test2 +; CHECK: icmp eq i8* %a, %b define i1 @test2(i8* %a, i8* %b) { %tmpa = ptrtoint i8* %a to i32 ; <i32> [#uses=1] %tmpb = ptrtoint i8* %b to i32 ; <i32> [#uses=1] |

