Skip to content

Commit 54f14d9

Browse files
committed
[FunctionAttrs] Add test for incorrect predicate in capture analysis (NFC)
1 parent 458b1e9 commit 54f14d9

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

llvm/test/Transforms/FunctionAttrs/nocapture.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
774808
define 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

Comments
 (0)