summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/select.ll
diff options
context:
space:
mode:
authorJohannes Doerfert <jdoerfert@anl.gov>2019-01-26 23:40:35 +0000
committerJohannes Doerfert <jdoerfert@anl.gov>2019-01-26 23:40:35 +0000
commit00102c7d9579745851320bd4373db1ce2612b2c4 (patch)
tree5fcf5539fb0fba2fb16a6bf5f1b5402048f21d97 /llvm/test/Transforms/InstCombine/select.ll
parent204bf2bbb265b5158783bacf9a67b0bc4cc57747 (diff)
downloadbcm5719-llvm-00102c7d9579745851320bd4373db1ce2612b2c4.tar.gz
bcm5719-llvm-00102c7d9579745851320bd4373db1ce2612b2c4.zip
[ValueTracking] Look through casts when determining non-nullness
Bitcast and certain Ptr2Int/Int2Ptr instructions will not alter the value of their operand and can therefore be looked through when we determine non-nullness. Differential Revision: https://reviews.llvm.org/D54956 llvm-svn: 352293
Diffstat (limited to 'llvm/test/Transforms/InstCombine/select.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/select.ll14
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/test/Transforms/InstCombine/select.ll b/llvm/test/Transforms/InstCombine/select.ll
index 5ea0f34e399..c601a98f062 100644
--- a/llvm/test/Transforms/InstCombine/select.ll
+++ b/llvm/test/Transforms/InstCombine/select.ll
@@ -1141,7 +1141,7 @@ define i32 @test82(i1 %flag) {
; CHECK-NEXT: [[Y:%.*]] = alloca i32, align 4
; CHECK-NEXT: [[X1:%.*]] = bitcast float* [[X]] to i32*
; CHECK-NEXT: [[Y1:%.*]] = bitcast i32* [[Y]] to float*
-; CHECK-NEXT: call void @scribble_on_i32(i32* [[X1]])
+; CHECK-NEXT: call void @scribble_on_i32(i32* nonnull [[X1]])
; CHECK-NEXT: call void @scribble_on_i32(i32* nonnull [[Y]])
; CHECK-NEXT: [[TMP:%.*]] = load float, float* [[X]], align 4
; CHECK-NEXT: store float [[TMP]], float* [[Y1]], align 4
@@ -1172,8 +1172,8 @@ define i8* @test83(i1 %flag) {
; CHECK-NEXT: [[Y:%.*]] = alloca i8*, align 8
; CHECK-NEXT: [[TMPCAST:%.*]] = bitcast i8** [[Y]] to i64*
; CHECK-NEXT: [[X1:%.*]] = bitcast i8** [[X]] to i64*
-; CHECK-NEXT: call void @scribble_on_i64(i64* [[X1]])
-; CHECK-NEXT: call void @scribble_on_i64(i64* [[TMPCAST]])
+; CHECK-NEXT: call void @scribble_on_i64(i64* nonnull [[X1]])
+; CHECK-NEXT: call void @scribble_on_i64(i64* nonnull [[TMPCAST]])
; CHECK-NEXT: [[TMP:%.*]] = load i64, i64* [[X1]], align 8
; CHECK-NEXT: store i64 [[TMP]], i64* [[TMPCAST]], align 8
; CHECK-NEXT: [[V:%.*]] = inttoptr i64 [[TMP]] to i8*
@@ -1200,8 +1200,8 @@ define i64 @test84(i1 %flag) {
; CHECK-NEXT: [[Y:%.*]] = alloca i8*, align 8
; CHECK-NEXT: [[TMPCAST:%.*]] = bitcast i8** [[Y]] to i64*
; CHECK-NEXT: [[X1:%.*]] = bitcast i8** [[X]] to i64*
-; CHECK-NEXT: call void @scribble_on_i64(i64* [[X1]])
-; CHECK-NEXT: call void @scribble_on_i64(i64* [[TMPCAST]])
+; CHECK-NEXT: call void @scribble_on_i64(i64* nonnull [[X1]])
+; CHECK-NEXT: call void @scribble_on_i64(i64* nonnull [[TMPCAST]])
; CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[X]], align 8
; CHECK-NEXT: store i8* [[TMP]], i8** [[Y]], align 8
; CHECK-NEXT: [[V:%.*]] = ptrtoint i8* [[TMP]] to i64
@@ -1230,7 +1230,7 @@ define i8* @test85(i1 %flag) {
; CHECK-NEXT: [[X1_SUB:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[X1]], i64 0, i64 0
; CHECK-NEXT: [[X2:%.*]] = bitcast [2 x i8*]* [[X1]] to i128*
; CHECK-NEXT: [[Y1:%.*]] = bitcast i128* [[Y]] to i8**
-; CHECK-NEXT: call void @scribble_on_i128(i128* [[X2]])
+; CHECK-NEXT: call void @scribble_on_i128(i128* nonnull [[X2]])
; CHECK-NEXT: call void @scribble_on_i128(i128* nonnull [[Y]])
; CHECK-NEXT: [[TMP:%.*]] = load i128, i128* [[X2]], align 8
; CHECK-NEXT: store i128 [[TMP]], i128* [[Y]], align 8
@@ -1263,7 +1263,7 @@ define i128 @test86(i1 %flag) {
; CHECK-NEXT: [[X1_SUB:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[X1]], i64 0, i64 0
; CHECK-NEXT: [[X2:%.*]] = bitcast [2 x i8*]* [[X1]] to i128*
; CHECK-NEXT: [[Y1:%.*]] = bitcast i128* [[Y]] to i8**
-; CHECK-NEXT: call void @scribble_on_i128(i128* [[X2]])
+; CHECK-NEXT: call void @scribble_on_i128(i128* nonnull [[X2]])
; CHECK-NEXT: call void @scribble_on_i128(i128* nonnull [[Y]])
; CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[X1_SUB]], align 8
; CHECK-NEXT: store i8* [[TMP]], i8** [[Y1]], align 8
OpenPOWER on IntegriCloud