[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