diff options
| author | Johannes Doerfert <jdoerfert@anl.gov> | 2019-01-26 23:40:35 +0000 |
|---|---|---|
| committer | Johannes Doerfert <jdoerfert@anl.gov> | 2019-01-26 23:40:35 +0000 |
| commit | 00102c7d9579745851320bd4373db1ce2612b2c4 (patch) | |
| tree | 5fcf5539fb0fba2fb16a6bf5f1b5402048f21d97 /llvm/test/Transforms/InstCombine/select.ll | |
| parent | 204bf2bbb265b5158783bacf9a67b0bc4cc57747 (diff) | |
| download | bcm5719-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.ll | 14 |
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 |

