[BasicAA] Add another GEP modulo test with shl with odd op.

This commit is contained in:
Florian Hahn 2021-04-07 22:26:01 +01:00
parent c0bbd0cc35
commit 0056e7e15a
No known key found for this signature in database
GPG Key ID: 61D7554B5CECDC0D
1 changed files with 15 additions and 0 deletions

View File

@ -172,6 +172,21 @@ define void @may_overflow_shl_sub_i64([16 x i8]* %ptr, i64 %idx) {
ret void
}
define void @shl_sub_nsw_nuw_i64([16 x i8]* %ptr, i64 %idx) {
; CHECK-LABEL: Function: shl_sub_nsw_nuw_i64: 3 pointers, 0 call sites
; CHECK-NEXT: MayAlias: [16 x i8]* %ptr, i8* %gep.idx
; CHECK-NEXT: PartialAlias: [16 x i8]* %ptr, i8* %gep.3
; CHECK-NEXT: NoAlias: i8* %gep.3, i8* %gep.idx
;
%mul = shl i64 %idx, 3
%sub = sub nsw nuw i64 %mul, 1
%gep.idx = getelementptr [16 x i8], [16 x i8]* %ptr, i32 0, i64 %sub
store i8 0, i8* %gep.idx, align 1
%gep.3 = getelementptr [16 x i8], [16 x i8]* %ptr, i32 0, i64 3
store i8 1, i8* %gep.3, align 1
ret void
}
; %gep.idx and %gep.3 must-alias if %mul overflows (e.g. %idx == 110).
define void @may_overflow_i32_sext([16 x i8]* %ptr, i32 %idx) {
; CHECK-LABEL: Function: may_overflow_i32_sext: 3 pointers, 0 call sites