[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