diff options
| author | Roman Lebedev <lebedev.ri@gmail.com> | 2019-09-11 15:28:03 +0000 |
|---|---|---|
| committer | Roman Lebedev <lebedev.ri@gmail.com> | 2019-09-11 15:28:03 +0000 |
| commit | 8aeb7bb013affb691cc417fcb50049bffcc158eb (patch) | |
| tree | b831c567829fce71733104674b7f43e95dac4c0d | |
| parent | 161cca266a9d0b6deb5f1fd2de8ad543649a7fa1 (diff) | |
| download | bcm5719-llvm-8aeb7bb013affb691cc417fcb50049bffcc158eb.tar.gz bcm5719-llvm-8aeb7bb013affb691cc417fcb50049bffcc158eb.zip | |
[NFC][InstSimplify] Add extra test for D67411 with @llvm.assume
llvm-svn: 371629
| -rw-r--r-- | llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll b/llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll index 5f59976db0e..8fb32e11513 100644 --- a/llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll +++ b/llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll @@ -244,3 +244,24 @@ define i1 @t15(i8* nonnull %base, i64 %offset) { %res = and i1 %no_overflow_during_adjustment, %non_null_after_adjustment ; swapped ret i1 %res } + +declare void @llvm.assume(i1) +define i1 @t16(i64 %base, i64 %offset) { +; CHECK-LABEL: @t16( +; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[BASE:%.*]], 0 +; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]]) +; CHECK-NEXT: [[ADJUSTED:%.*]] = add i64 [[BASE]], [[OFFSET:%.*]] +; CHECK-NEXT: [[NON_NULL_AFTER_ADJUSTMENT:%.*]] = icmp ne i64 [[ADJUSTED]], 0 +; CHECK-NEXT: [[NO_OVERFLOW_DURING_ADJUSTMENT:%.*]] = icmp uge i64 [[ADJUSTED]], [[BASE]] +; CHECK-NEXT: [[RES:%.*]] = and i1 [[NON_NULL_AFTER_ADJUSTMENT]], [[NO_OVERFLOW_DURING_ADJUSTMENT]] +; CHECK-NEXT: ret i1 [[RES]] +; + %cmp = icmp slt i64 %base, 0 + call void @llvm.assume(i1 %cmp) + + %adjusted = add i64 %base, %offset + %non_null_after_adjustment = icmp ne i64 %adjusted, 0 + %no_overflow_during_adjustment = icmp uge i64 %adjusted, %base + %res = and i1 %non_null_after_adjustment, %no_overflow_during_adjustment + ret i1 %res +} |

