[llvm] 28be9af - [SimplifyCFG] Add tests for D97244 (NFC)

Juneyoung Lee via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 23 00:15:26 PST 2021


Author: Juneyoung Lee
Date: 2021-02-23T17:15:17+09:00
New Revision: 28be9af0f8a412a1653200118326fa2b85fe2c81

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

LOG: [SimplifyCFG] Add tests for D97244 (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll b/llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
index 4c984819cfcf..7589fd551903 100644
--- a/llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
+++ b/llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
@@ -205,6 +205,8 @@ else:
 }
 
 declare i8* @fn_nonnull_noundef_arg(i8* nonnull noundef %p)
+declare i8* @fn_nonnull_deref_arg(i8* dereferenceable(4) noundef %p)
+declare i8* @fn_nonnull_deref_or_null_arg(i8* dereferenceable_or_null(4) noundef %p)
 declare i8* @fn_nonnull_arg(i8* nonnull %p)
 declare i8* @fn_noundef_arg(i8* noundef %p)
 
@@ -228,6 +230,46 @@ else:
   ret void
 }
 
+; Optimizing this code should produce assume.
+define void @test9_deref(i1 %X, i8* %Y) {
+; CHECK-LABEL: @test9_deref(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[X:%.*]], i8* null, i8* [[Y:%.*]]
+; CHECK-NEXT:    [[TMP0:%.*]] = call i8* @fn_nonnull_deref_arg(i8* [[SPEC_SELECT]])
+; CHECK-NEXT:    ret void
+;
+entry:
+  br i1 %X, label %if, label %else
+
+if:
+  br label %else
+
+else:
+  %phi = phi i8* [ %Y, %entry ], [ null, %if ]
+  call i8* @fn_nonnull_deref_arg(i8* %phi)
+  ret void
+}
+
+; Optimizing this code should produce assume.
+define void @test9_deref_or_null(i1 %X, i8* %Y) {
+; CHECK-LABEL: @test9_deref_or_null(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[X:%.*]], i8* null, i8* [[Y:%.*]]
+; CHECK-NEXT:    [[TMP0:%.*]] = call i8* @fn_nonnull_deref_or_null_arg(i8* [[SPEC_SELECT]])
+; CHECK-NEXT:    ret void
+;
+entry:
+  br i1 %X, label %if, label %else
+
+if:
+  br label %else
+
+else:
+  %phi = phi i8* [ %Y, %entry ], [ null, %if ]
+  call i8* @fn_nonnull_deref_or_null_arg(i8* %phi)
+  ret void
+}
+
 define void @test9_undef(i1 %X, i8* %Y) {
 ; CHECK-LABEL: @test9_undef(
 ; CHECK-NEXT:  entry:


        


More information about the llvm-commits mailing list