@@ -771,6 +771,40 @@ define i1 @captureICmpRev(ptr %x) {
771771 ret i1 %1
772772}
773773
774+ define i1 @captureICmpWrongPred (ptr %x ) {
775+ ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
776+ ; FNATTRS-LABEL: define i1 @captureICmpWrongPred
777+ ; FNATTRS-SAME: (ptr readnone [[X:%.*]]) #[[ATTR0]] {
778+ ; FNATTRS-NEXT: [[TMP1:%.*]] = icmp slt ptr [[X]], null
779+ ; FNATTRS-NEXT: ret i1 [[TMP1]]
780+ ;
781+ ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
782+ ; ATTRIBUTOR-LABEL: define i1 @captureICmpWrongPred
783+ ; ATTRIBUTOR-SAME: (ptr nofree readnone [[X:%.*]]) #[[ATTR0]] {
784+ ; ATTRIBUTOR-NEXT: [[TMP1:%.*]] = icmp slt ptr [[X]], null
785+ ; ATTRIBUTOR-NEXT: ret i1 [[TMP1]]
786+ ;
787+ %1 = icmp slt ptr %x , null
788+ ret i1 %1
789+ }
790+
791+ define i1 @captureICmpWrongPredDereferenceableOrNull (ptr dereferenceable_or_null (1 ) %x ) {
792+ ; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
793+ ; FNATTRS-LABEL: define noundef i1 @captureICmpWrongPredDereferenceableOrNull
794+ ; FNATTRS-SAME: (ptr readnone captures(none) dereferenceable_or_null(1) [[X:%.*]]) #[[ATTR0]] {
795+ ; FNATTRS-NEXT: [[TMP1:%.*]] = icmp slt ptr [[X]], null
796+ ; FNATTRS-NEXT: ret i1 [[TMP1]]
797+ ;
798+ ; ATTRIBUTOR: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
799+ ; ATTRIBUTOR-LABEL: define i1 @captureICmpWrongPredDereferenceableOrNull
800+ ; ATTRIBUTOR-SAME: (ptr nofree readnone dereferenceable_or_null(1) [[X:%.*]]) #[[ATTR0]] {
801+ ; ATTRIBUTOR-NEXT: [[TMP1:%.*]] = icmp slt ptr [[X]], null
802+ ; ATTRIBUTOR-NEXT: ret i1 [[TMP1]]
803+ ;
804+ %1 = icmp slt ptr %x , null
805+ ret i1 %1
806+ }
807+
774808define i1 @nocaptureInboundsGEPICmp (ptr %x ) {
775809; FNATTRS: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
776810; FNATTRS-LABEL: define i1 @nocaptureInboundsGEPICmp
0 commit comments