@@ -788,10 +788,12 @@ define i1 @captureICmpWrongPred(ptr %x) {
788788 ret i1 %1
789789}
790790
791+ ; We could infer captures(address_is_null) here, but don't bother, because
792+ ; InstCombine will optimize the GEP away.
791793define i1 @nocaptureInboundsGEPICmp (ptr %x ) {
792794; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
793795; FNATTRS-LABEL: define i1 @nocaptureInboundsGEPICmp
794- ; FNATTRS-SAME: (ptr readnone captures(address_is_null ) [[X:%.*]]) #[[ATTR0]] {
796+ ; FNATTRS-SAME: (ptr readnone captures(address ) [[X:%.*]]) #[[ATTR0]] {
795797; FNATTRS-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, ptr [[X]], i32 5
796798; FNATTRS-NEXT: [[TMP2:%.*]] = icmp eq ptr [[TMP1]], null
797799; FNATTRS-NEXT: ret i1 [[TMP2]]
@@ -811,7 +813,7 @@ define i1 @nocaptureInboundsGEPICmp(ptr %x) {
811813define i1 @nocaptureInboundsGEPICmpRev (ptr %x ) {
812814; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
813815; FNATTRS-LABEL: define i1 @nocaptureInboundsGEPICmpRev
814- ; FNATTRS-SAME: (ptr readnone captures(address_is_null ) [[X:%.*]]) #[[ATTR0]] {
816+ ; FNATTRS-SAME: (ptr readnone captures(address ) [[X:%.*]]) #[[ATTR0]] {
815817; FNATTRS-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, ptr [[X]], i32 5
816818; FNATTRS-NEXT: [[TMP2:%.*]] = icmp eq ptr null, [[TMP1]]
817819; FNATTRS-NEXT: ret i1 [[TMP2]]
0 commit comments