[llvm] f45ba18 - Precommit test for D108204
Jingu Kang via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 20 01:35:21 PDT 2021
Author: Jingu Kang
Date: 2021-08-20T09:33:59+01:00
New Revision: f45ba18e964e07ef1c13bb020bafb9cb62a2ad65
URL: https://github.com/llvm/llvm-project/commit/f45ba18e964e07ef1c13bb020bafb9cb62a2ad65
DIFF: https://github.com/llvm/llvm-project/commit/f45ba18e964e07ef1c13bb020bafb9cb62a2ad65.diff
LOG: Precommit test for D108204
Added:
llvm/test/Transforms/GVN/gvn-loop-load-pre-order.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/GVN/gvn-loop-load-pre-order.ll b/llvm/test/Transforms/GVN/gvn-loop-load-pre-order.ll
new file mode 100644
index 0000000000000..8da767cc0db10
--- /dev/null
+++ b/llvm/test/Transforms/GVN/gvn-loop-load-pre-order.ll
@@ -0,0 +1,72 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -loops -gvn -S | FileCheck -check-prefix=CHECK-PRE %s
+; RUN: opt < %s -loops -gvn -sccp -S | FileCheck -check-prefix=CHECK-SCCP %s
+
+ at b = external global i32, align 4
+
+define void @main(i1 %cond) {
+; CHECK-PRE-LABEL: @main(
+; CHECK-PRE-NEXT: entry:
+; CHECK-PRE-NEXT: store i32 0, i32* @b, align 4
+; CHECK-PRE-NEXT: br label [[WHILE_BODY3:%.*]]
+; CHECK-PRE: while.cond.loopexit.loopexit:
+; CHECK-PRE-NEXT: ret void
+; CHECK-PRE: while.body3:
+; CHECK-PRE-NEXT: [[TMP0:%.*]] = phi i32 [ [[DOTPRE:%.*]], [[IF_END_WHILE_BODY3_CRIT_EDGE:%.*]] ], [ 0, [[ENTRY:%.*]] ]
+; CHECK-PRE-NEXT: [[TOBOOL4_NOT:%.*]] = icmp eq i32 [[TMP0]], 0
+; CHECK-PRE-NEXT: br i1 [[TOBOOL4_NOT]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
+; CHECK-PRE: if.then:
+; CHECK-PRE-NEXT: tail call void @foo()
+; CHECK-PRE-NEXT: br label [[IF_END]]
+; CHECK-PRE: if.end:
+; CHECK-PRE-NEXT: br i1 [[COND:%.*]], label [[WHILE_COND_LOOPEXIT_LOOPEXIT:%.*]], label [[IF_END_WHILE_BODY3_CRIT_EDGE]]
+; CHECK-PRE: if.end.while.body3_crit_edge:
+; CHECK-PRE-NEXT: [[DOTPRE]] = load i32, i32* @b, align 4
+; CHECK-PRE-NEXT: br label [[WHILE_BODY3]]
+;
+; CHECK-SCCP-LABEL: @main(
+; CHECK-SCCP-NEXT: entry:
+; CHECK-SCCP-NEXT: store i32 0, i32* @b, align 4
+; CHECK-SCCP-NEXT: br label [[WHILE_BODY3:%.*]]
+; CHECK-SCCP: while.cond.loopexit.loopexit:
+; CHECK-SCCP-NEXT: ret void
+; CHECK-SCCP: while.body3:
+; CHECK-SCCP-NEXT: [[TMP0:%.*]] = phi i32 [ [[DOTPRE:%.*]], [[IF_END_WHILE_BODY3_CRIT_EDGE:%.*]] ], [ 0, [[ENTRY:%.*]] ]
+; CHECK-SCCP-NEXT: [[TOBOOL4_NOT:%.*]] = icmp eq i32 [[TMP0]], 0
+; CHECK-SCCP-NEXT: br i1 [[TOBOOL4_NOT]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
+; CHECK-SCCP: if.then:
+; CHECK-SCCP-NEXT: tail call void @foo()
+; CHECK-SCCP-NEXT: br label [[IF_END]]
+; CHECK-SCCP: if.end:
+; CHECK-SCCP-NEXT: br i1 [[COND:%.*]], label [[WHILE_COND_LOOPEXIT_LOOPEXIT:%.*]], label [[IF_END_WHILE_BODY3_CRIT_EDGE]]
+; CHECK-SCCP: if.end.while.body3_crit_edge:
+; CHECK-SCCP-NEXT: [[DOTPRE]] = load i32, i32* @b, align 4
+; CHECK-SCCP-NEXT: br label [[WHILE_BODY3]]
+;
+entry:
+ store i32 0, i32* @b
+ br label %while.body3.lr.ph
+
+while.cond.loopexit.loopexit: ; preds = %if.end
+ ret void
+
+while.body3.lr.ph: ; preds = %while.cond1.preheader
+ %0 = load i32, i32* @b, align 4
+ %1 = icmp eq i32 %0, 0
+ br label %while.body3
+
+while.body3: ; preds = %if.end, %while.body3.lr.ph
+ %2 = load i32, i32* @b, align 4
+ %tobool4.not = icmp eq i32 %2, 0
+ br i1 %tobool4.not, label %if.end, label %if.then
+
+if.then: ; preds = %while.body3
+ tail call void @foo()
+ br label %if.end
+
+if.end: ; preds = %if.then, %while.body3
+ br i1 %cond, label %while.cond.loopexit.loopexit, label %while.body3
+}
+
+declare void @foo()
+
More information about the llvm-commits
mailing list