Skip to content

Commit bd898d5

Browse files
committed
[FunctionAttrs] Add tests for incorrect noundef inference (#88026)
1 parent 13beabe commit bd898d5

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

llvm/test/Transforms/FunctionAttrs/noundef.ll

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,54 @@ define i64 @test_trunc_with_constexpr() {
166166
%conv = sext i32 %add to i64
167167
ret i64 %conv
168168
}
169+
170+
; FIXME: This is a miscompile.
171+
define align 4 ptr @maybe_not_aligned(ptr noundef %p) {
172+
; CHECK-LABEL: define noundef align 4 ptr @maybe_not_aligned(
173+
; CHECK-SAME: ptr noundef readnone returned [[P:%.*]]) #[[ATTR0]] {
174+
; CHECK-NEXT: ret ptr [[P]]
175+
;
176+
ret ptr %p
177+
}
178+
179+
define align 4 ptr @definitely_aligned(ptr noundef align 4 %p) {
180+
; CHECK-LABEL: define noundef align 4 ptr @definitely_aligned(
181+
; CHECK-SAME: ptr noundef readnone returned align 4 [[P:%.*]]) #[[ATTR0]] {
182+
; CHECK-NEXT: ret ptr [[P]]
183+
;
184+
ret ptr %p
185+
}
186+
187+
; FIXME: This is a miscompile.
188+
define nonnull ptr @maybe_not_nonnull(ptr noundef %p) {
189+
; CHECK-LABEL: define noundef nonnull ptr @maybe_not_nonnull(
190+
; CHECK-SAME: ptr noundef readnone returned [[P:%.*]]) #[[ATTR0]] {
191+
; CHECK-NEXT: ret ptr [[P]]
192+
;
193+
ret ptr %p
194+
}
195+
196+
define nonnull ptr @definitely_nonnull(ptr noundef nonnull %p) {
197+
; CHECK-LABEL: define noundef nonnull ptr @definitely_nonnull(
198+
; CHECK-SAME: ptr noundef nonnull readnone returned [[P:%.*]]) #[[ATTR0]] {
199+
; CHECK-NEXT: ret ptr [[P]]
200+
;
201+
ret ptr %p
202+
}
203+
204+
; FIXME: This is a miscompile.
205+
define range(i8 0, 10) i8 @maybe_not_in_range(i8 noundef %v) {
206+
; CHECK-LABEL: define noundef range(i8 0, 10) i8 @maybe_not_in_range(
207+
; CHECK-SAME: i8 noundef returned [[V:%.*]]) #[[ATTR0]] {
208+
; CHECK-NEXT: ret i8 [[V]]
209+
;
210+
ret i8 %v
211+
}
212+
213+
define range(i8 0, 10) i8 @definitely_in_range(i8 noundef range(i8 0, 10) %v) {
214+
; CHECK-LABEL: define noundef range(i8 0, 10) i8 @definitely_in_range(
215+
; CHECK-SAME: i8 noundef returned range(i8 0, 10) [[V:%.*]]) #[[ATTR0]] {
216+
; CHECK-NEXT: ret i8 [[V]]
217+
;
218+
ret i8 %v
219+
}

0 commit comments

Comments
 (0)