Skip to content

Commit 8aeb7bb

Browse files
committed
[NFC][InstSimplify] Add extra test for D67411 with @llvm.assume
llvm-svn: 371629
1 parent 161cca2 commit 8aeb7bb

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

llvm/test/Transforms/InstSimplify/redundant-null-check-in-uadd_with_overflow-of-nonnull-ptr.ll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,24 @@ define i1 @t15(i8* nonnull %base, i64 %offset) {
244244
%res = and i1 %no_overflow_during_adjustment, %non_null_after_adjustment ; swapped
245245
ret i1 %res
246246
}
247+
248+
declare void @llvm.assume(i1)
249+
define i1 @t16(i64 %base, i64 %offset) {
250+
; CHECK-LABEL: @t16(
251+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i64 [[BASE:%.*]], 0
252+
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
253+
; CHECK-NEXT: [[ADJUSTED:%.*]] = add i64 [[BASE]], [[OFFSET:%.*]]
254+
; CHECK-NEXT: [[NON_NULL_AFTER_ADJUSTMENT:%.*]] = icmp ne i64 [[ADJUSTED]], 0
255+
; CHECK-NEXT: [[NO_OVERFLOW_DURING_ADJUSTMENT:%.*]] = icmp uge i64 [[ADJUSTED]], [[BASE]]
256+
; CHECK-NEXT: [[RES:%.*]] = and i1 [[NON_NULL_AFTER_ADJUSTMENT]], [[NO_OVERFLOW_DURING_ADJUSTMENT]]
257+
; CHECK-NEXT: ret i1 [[RES]]
258+
;
259+
%cmp = icmp slt i64 %base, 0
260+
call void @llvm.assume(i1 %cmp)
261+
262+
%adjusted = add i64 %base, %offset
263+
%non_null_after_adjustment = icmp ne i64 %adjusted, 0
264+
%no_overflow_during_adjustment = icmp uge i64 %adjusted, %base
265+
%res = and i1 %non_null_after_adjustment, %no_overflow_during_adjustment
266+
ret i1 %res
267+
}

0 commit comments

Comments
 (0)