[llvm] bd898d5 - [FunctionAttrs] Add tests for incorrect noundef inference (#88026)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 18 22:56:01 PDT 2024


Author: Nikita Popov
Date: 2024-04-19T14:55:50+09:00
New Revision: bd898d5e111e33a7f614f6b6c34940d81be6682c

URL: https://github.com/llvm/llvm-project/commit/bd898d5e111e33a7f614f6b6c34940d81be6682c
DIFF: https://github.com/llvm/llvm-project/commit/bd898d5e111e33a7f614f6b6c34940d81be6682c.diff

LOG: [FunctionAttrs] Add tests for incorrect noundef inference (#88026)

Added: 
    

Modified: 
    llvm/test/Transforms/FunctionAttrs/noundef.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/FunctionAttrs/noundef.ll b/llvm/test/Transforms/FunctionAttrs/noundef.ll
index 9ab37082a30329..64deda546c067b 100644
--- a/llvm/test/Transforms/FunctionAttrs/noundef.ll
+++ b/llvm/test/Transforms/FunctionAttrs/noundef.ll
@@ -166,3 +166,54 @@ define i64 @test_trunc_with_constexpr() {
   %conv = sext i32 %add to i64
   ret i64 %conv
 }
+
+; FIXME: This is a miscompile.
+define align 4 ptr @maybe_not_aligned(ptr noundef %p) {
+; CHECK-LABEL: define noundef align 4 ptr @maybe_not_aligned(
+; CHECK-SAME: ptr noundef readnone returned [[P:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret ptr [[P]]
+;
+  ret ptr %p
+}
+
+define align 4 ptr @definitely_aligned(ptr noundef align 4 %p) {
+; CHECK-LABEL: define noundef align 4 ptr @definitely_aligned(
+; CHECK-SAME: ptr noundef readnone returned align 4 [[P:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret ptr [[P]]
+;
+  ret ptr %p
+}
+
+; FIXME: This is a miscompile.
+define nonnull ptr @maybe_not_nonnull(ptr noundef %p) {
+; CHECK-LABEL: define noundef nonnull ptr @maybe_not_nonnull(
+; CHECK-SAME: ptr noundef readnone returned [[P:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret ptr [[P]]
+;
+  ret ptr %p
+}
+
+define nonnull ptr @definitely_nonnull(ptr noundef nonnull %p) {
+; CHECK-LABEL: define noundef nonnull ptr @definitely_nonnull(
+; CHECK-SAME: ptr noundef nonnull readnone returned [[P:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret ptr [[P]]
+;
+  ret ptr %p
+}
+
+; FIXME: This is a miscompile.
+define range(i8 0, 10) i8 @maybe_not_in_range(i8 noundef %v) {
+; CHECK-LABEL: define noundef range(i8 0, 10) i8 @maybe_not_in_range(
+; CHECK-SAME: i8 noundef returned [[V:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret i8 [[V]]
+;
+  ret i8 %v
+}
+
+define range(i8 0, 10) i8 @definitely_in_range(i8 noundef range(i8 0, 10) %v) {
+; CHECK-LABEL: define noundef range(i8 0, 10) i8 @definitely_in_range(
+; CHECK-SAME: i8 noundef returned range(i8 0, 10) [[V:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    ret i8 [[V]]
+;
+  ret i8 %v
+}


        


More information about the llvm-commits mailing list