[llvm] r365262 - [LFTR] Regenerate test checks; NFC
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 6 01:54:16 PDT 2019
Author: nikic
Date: Sat Jul 6 01:54:15 2019
New Revision: 365262
URL: http://llvm.org/viewvc/llvm-project?rev=365262&view=rev
Log:
[LFTR] Regenerate test checks; NFC
Added:
llvm/trunk/test/Transforms/IndVarSimplify/lftr-pr20680.ll
Removed:
llvm/trunk/test/Transforms/IndVarSimplify/pr20680.ll
Added: llvm/trunk/test/Transforms/IndVarSimplify/lftr-pr20680.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/lftr-pr20680.ll?rev=365262&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/IndVarSimplify/lftr-pr20680.ll (added)
+++ llvm/trunk/test/Transforms/IndVarSimplify/lftr-pr20680.ll Sat Jul 6 01:54:15 2019
@@ -0,0 +1,353 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -indvars -S | FileCheck %s
+
+; Provide legal integer types.
+target datalayout = "n8:16:32:64"
+
+
+ at a = common global i32 0, align 4
+ at c = common global i32 0, align 4
+ at b = common global i32 0, align 4
+
+define void @f() {
+; CHECK-LABEL: @f(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* @a, align 4
+; CHECK-NEXT: [[TOBOOL2:%.*]] = icmp eq i32 [[TMP0]], 0
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* @a, align 4
+; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[TMP1]], 0
+; CHECK-NEXT: br label [[FOR_COND2_PREHEADER:%.*]]
+; CHECK: for.cond2.preheader:
+; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i32 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC13:%.*]] ], [ -14, [[ENTRY:%.*]] ]
+; CHECK-NEXT: br i1 [[TOBOOL2]], label [[FOR_INC13]], label [[FOR_BODY3_LR_PH:%.*]]
+; CHECK: for.body3.lr.ph:
+; CHECK-NEXT: [[TMP2:%.*]] = add nsw i32 [[INDVARS_IV]], 1
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ult i32 [[TMP2]], 3
+; CHECK-NEXT: [[DIV:%.*]] = select i1 [[TMP3]], i32 [[INDVARS_IV]], i32 0
+; CHECK-NEXT: br i1 false, label [[FOR_BODY3_LR_PH_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_FOR_BODY3_LR_PH_SPLIT_CRIT_EDGE:%.*]]
+; CHECK: for.body3.lr.ph.for.body3.lr.ph.split_crit_edge:
+; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT:%.*]]
+; CHECK: for.body3.lr.ph.split.us:
+; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_US_FOR_BODY3_LR_PH_SPLIT_US_SPLIT_CRIT_EDGE:%.*]]
+; CHECK: for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge:
+; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT:%.*]]
+; CHECK: for.body3.lr.ph.split.us.split.us:
+; CHECK-NEXT: br label [[FOR_BODY3_US_US:%.*]]
+; CHECK: for.body3.us.us:
+; CHECK-NEXT: br i1 true, label [[COND_FALSE_US_US:%.*]], label [[COND_END_US_US:%.*]]
+; CHECK: cond.false.us.us:
+; CHECK-NEXT: br label [[COND_END_US_US]]
+; CHECK: cond.end.us.us:
+; CHECK-NEXT: [[TMP4:%.*]] = load i32, i32* @b, align 4
+; CHECK-NEXT: [[CMP91_US_US:%.*]] = icmp slt i32 [[TMP4]], 1
+; CHECK-NEXT: br i1 [[CMP91_US_US]], label [[FOR_INC_LR_PH_US_US:%.*]], label [[FOR_COND2_LOOPEXIT_US_US:%.*]]
+; CHECK: for.cond2.loopexit.us.us:
+; CHECK-NEXT: br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA_US:%.*]], label [[FOR_BODY3_US_US]]
+; CHECK: for.inc.lr.ph.us.us:
+; CHECK-NEXT: br label [[FOR_INC_US_US:%.*]]
+; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us.us:
+; CHECK-NEXT: store i32 1, i32* @b, align 4
+; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US_US]]
+; CHECK: for.inc.us.us:
+; CHECK-NEXT: [[TMP5:%.*]] = phi i32 [ [[TMP4]], [[FOR_INC_LR_PH_US_US]] ], [ [[INC_US_US:%.*]], [[FOR_INC_US_US]] ]
+; CHECK-NEXT: [[INC_US_US]] = add nsw i32 [[TMP5]], 1
+; CHECK-NEXT: [[EXITCOND3:%.*]] = icmp ne i32 [[INC_US_US]], 1
+; CHECK-NEXT: br i1 [[EXITCOND3]], label [[FOR_INC_US_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US_US:%.*]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us:
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US:%.*]]
+; CHECK: for.body3.lr.ph.split.us.split:
+; CHECK-NEXT: br label [[FOR_BODY3_US:%.*]]
+; CHECK: for.body3.us:
+; CHECK-NEXT: br i1 true, label [[COND_FALSE_US:%.*]], label [[COND_END_US:%.*]]
+; CHECK: cond.false.us:
+; CHECK-NEXT: br label [[COND_END_US]]
+; CHECK: cond.end.us:
+; CHECK-NEXT: [[COND_US:%.*]] = phi i32 [ [[DIV]], [[COND_FALSE_US]] ], [ [[INDVARS_IV]], [[FOR_BODY3_US]] ]
+; CHECK-NEXT: [[TMP6:%.*]] = load i32, i32* @b, align 4
+; CHECK-NEXT: [[CMP91_US:%.*]] = icmp slt i32 [[TMP6]], 1
+; CHECK-NEXT: br i1 [[CMP91_US]], label [[FOR_INC_LR_PH_US:%.*]], label [[FOR_COND2_LOOPEXIT_US:%.*]]
+; CHECK: for.inc.us:
+; CHECK-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP6]], [[FOR_INC_LR_PH_US]] ], [ [[INC_US:%.*]], [[FOR_INC_US:%.*]] ]
+; CHECK-NEXT: [[INC_US]] = add nsw i32 [[TMP7]], 1
+; CHECK-NEXT: [[EXITCOND2:%.*]] = icmp ne i32 [[INC_US]], 1
+; CHECK-NEXT: br i1 [[EXITCOND2]], label [[FOR_INC_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US:%.*]]
+; CHECK: for.cond2.loopexit.us:
+; CHECK-NEXT: br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA:%.*]], label [[FOR_BODY3_US]]
+; CHECK: for.inc.lr.ph.us:
+; CHECK-NEXT: br label [[FOR_INC_US]]
+; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us:
+; CHECK-NEXT: store i32 1, i32* @b, align 4
+; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa:
+; CHECK-NEXT: [[COND_LCSSA_PH_US_PH:%.*]] = phi i32 [ [[COND_US]], [[FOR_COND2_LOOPEXIT_US]] ]
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us:
+; CHECK-NEXT: [[COND_LCSSA_PH_US:%.*]] = phi i32 [ [[COND_LCSSA_PH_US_PH]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA]] ], [ [[DIV]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA_US]] ]
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE:%.*]]
+; CHECK: for.body3.lr.ph.split:
+; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_FOR_BODY3_LR_PH_SPLIT_SPLIT_CRIT_EDGE:%.*]]
+; CHECK: for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge:
+; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT_SPLIT:%.*]]
+; CHECK: for.body3.lr.ph.split.split.us:
+; CHECK-NEXT: br label [[FOR_BODY3_US3:%.*]]
+; CHECK: for.body3.us3:
+; CHECK-NEXT: br i1 false, label [[COND_FALSE_US4:%.*]], label [[COND_END_US5:%.*]]
+; CHECK: cond.false.us4:
+; CHECK-NEXT: br label [[COND_END_US5]]
+; CHECK: cond.end.us5:
+; CHECK-NEXT: [[TMP8:%.*]] = load i32, i32* @b, align 4
+; CHECK-NEXT: [[CMP91_US7:%.*]] = icmp slt i32 [[TMP8]], 1
+; CHECK-NEXT: br i1 [[CMP91_US7]], label [[FOR_INC_LR_PH_US12:%.*]], label [[FOR_COND2_LOOPEXIT_US11:%.*]]
+; CHECK: for.inc.us8:
+; CHECK-NEXT: [[TMP9:%.*]] = phi i32 [ [[TMP8]], [[FOR_INC_LR_PH_US12]] ], [ [[INC_US9:%.*]], [[FOR_INC_US8:%.*]] ]
+; CHECK-NEXT: [[INC_US9]] = add nsw i32 [[TMP9]], 1
+; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[INC_US9]], 1
+; CHECK-NEXT: br i1 [[EXITCOND1]], label [[FOR_INC_US8]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US13:%.*]]
+; CHECK: for.cond2.loopexit.us11:
+; CHECK-NEXT: br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA_US:%.*]], label [[FOR_BODY3_US3]]
+; CHECK: for.inc.lr.ph.us12:
+; CHECK-NEXT: br label [[FOR_INC_US8]]
+; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us13:
+; CHECK-NEXT: store i32 1, i32* @b, align 4
+; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US11]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us:
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA:%.*]]
+; CHECK: for.body3.lr.ph.split.split:
+; CHECK-NEXT: br label [[FOR_BODY3:%.*]]
+; CHECK: for.cond8.for.cond2.loopexit_crit_edge:
+; CHECK-NEXT: store i32 1, i32* @b, align 4
+; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT:%.*]]
+; CHECK: for.cond2.loopexit:
+; CHECK-NEXT: br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA:%.*]], label [[FOR_BODY3]]
+; CHECK: for.body3:
+; CHECK-NEXT: br i1 false, label [[COND_FALSE:%.*]], label [[COND_END:%.*]]
+; CHECK: cond.false:
+; CHECK-NEXT: br label [[COND_END]]
+; CHECK: cond.end:
+; CHECK-NEXT: [[TMP10:%.*]] = load i32, i32* @b, align 4
+; CHECK-NEXT: [[CMP91:%.*]] = icmp slt i32 [[TMP10]], 1
+; CHECK-NEXT: br i1 [[CMP91]], label [[FOR_INC_LR_PH:%.*]], label [[FOR_COND2_LOOPEXIT]]
+; CHECK: for.inc.lr.ph:
+; CHECK-NEXT: br label [[FOR_INC:%.*]]
+; CHECK: for.inc:
+; CHECK-NEXT: [[TMP11:%.*]] = phi i32 [ [[TMP10]], [[FOR_INC_LR_PH]] ], [ [[INC:%.*]], [[FOR_INC]] ]
+; CHECK-NEXT: [[INC]] = add nsw i32 [[TMP11]], 1
+; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[INC]], 1
+; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_INC]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE:%.*]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa:
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA]]
+; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa:
+; CHECK-NEXT: [[COND_LCSSA_PH:%.*]] = phi i32 [ [[INDVARS_IV]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA]] ], [ [[INDVARS_IV]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA_US]] ]
+; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE]]
+; CHECK: for.cond2.for.inc13_crit_edge:
+; CHECK-NEXT: [[COND_LCSSA:%.*]] = phi i32 [ [[COND_LCSSA_PH]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA]] ], [ [[COND_LCSSA_PH_US]], [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US]] ]
+; CHECK-NEXT: store i32 [[COND_LCSSA]], i32* @c, align 4
+; CHECK-NEXT: br label [[FOR_INC13]]
+; CHECK: for.inc13:
+; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nsw i32 [[INDVARS_IV]], 1
+; CHECK-NEXT: [[EXITCOND4:%.*]] = icmp ne i32 [[INDVARS_IV_NEXT]], 0
+; CHECK-NEXT: br i1 [[EXITCOND4]], label [[FOR_COND2_PREHEADER]], label [[FOR_END15:%.*]]
+; CHECK: for.end15:
+; CHECK-NEXT: ret void
+;
+
+; br i1 {{.*}}, label %[[for_inc13]], label %
+entry:
+ %0 = load i32, i32* @a, align 4
+ %tobool2 = icmp eq i32 %0, 0
+ %1 = load i32, i32* @a, align 4
+ %tobool = icmp eq i32 %1, 0
+ br label %for.cond2.preheader
+
+for.cond2.preheader: ; preds = %for.inc13, %entry
+ %storemerge15 = phi i8 [ -14, %entry ], [ %inc14, %for.inc13 ]
+ br i1 %tobool2, label %for.inc13, label %for.body3.lr.ph
+
+for.body3.lr.ph: ; preds = %for.cond2.preheader
+ %tobool5 = icmp eq i8 %storemerge15, 0
+ %conv7 = sext i8 %storemerge15 to i32
+ %2 = add nsw i32 %conv7, 1
+ %3 = icmp ult i32 %2, 3
+ %div = select i1 %3, i32 %conv7, i32 0
+ br i1 %tobool5, label %for.body3.lr.ph.split.us, label %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
+
+for.body3.lr.ph.for.body3.lr.ph.split_crit_edge: ; preds = %for.body3.lr.ph
+ br label %for.body3.lr.ph.split
+
+for.body3.lr.ph.split.us: ; preds = %for.body3.lr.ph
+ br i1 %tobool, label %for.body3.lr.ph.split.us.split.us, label %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
+
+for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge: ; preds = %for.body3.lr.ph.split.us
+ br label %for.body3.lr.ph.split.us.split
+
+for.body3.lr.ph.split.us.split.us: ; preds = %for.body3.lr.ph.split.us
+ br label %for.body3.us.us
+
+for.body3.us.us: ; preds = %for.cond2.loopexit.us.us, %for.body3.lr.ph.split.us.split.us
+ br i1 true, label %cond.false.us.us, label %cond.end.us.us
+
+cond.false.us.us: ; preds = %for.body3.us.us
+ br label %cond.end.us.us
+
+cond.end.us.us: ; preds = %cond.false.us.us, %for.body3.us.us
+ %cond.us.us = phi i32 [ %div, %cond.false.us.us ], [ %conv7, %for.body3.us.us ]
+ %4 = load i32, i32* @b, align 4
+ %cmp91.us.us = icmp slt i32 %4, 1
+ br i1 %cmp91.us.us, label %for.inc.lr.ph.us.us, label %for.cond2.loopexit.us.us
+
+for.cond2.loopexit.us.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us.us, %cond.end.us.us
+ br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us, label %for.body3.us.us
+
+for.inc.lr.ph.us.us: ; preds = %cond.end.us.us
+ br label %for.inc.us.us
+
+for.cond8.for.cond2.loopexit_crit_edge.us.us: ; preds = %for.inc.us.us
+ %inc.lcssa.us.us = phi i32 [ %inc.us.us, %for.inc.us.us ]
+ store i32 %inc.lcssa.us.us, i32* @b, align 4
+ br label %for.cond2.loopexit.us.us
+
+for.inc.us.us: ; preds = %for.inc.us.us, %for.inc.lr.ph.us.us
+ %5 = phi i32 [ %4, %for.inc.lr.ph.us.us ], [ %inc.us.us, %for.inc.us.us ]
+ %inc.us.us = add nsw i32 %5, 1
+ %cmp9.us.us = icmp slt i32 %inc.us.us, 1
+ br i1 %cmp9.us.us, label %for.inc.us.us, label %for.cond8.for.cond2.loopexit_crit_edge.us.us
+
+for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us: ; preds = %for.cond2.loopexit.us.us
+ %cond.lcssa.ph.us.ph.us = phi i32 [ %cond.us.us, %for.cond2.loopexit.us.us ]
+ br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
+
+for.body3.lr.ph.split.us.split: ; preds = %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
+ br label %for.body3.us
+
+for.body3.us: ; preds = %for.cond2.loopexit.us, %for.body3.lr.ph.split.us.split
+ br i1 true, label %cond.false.us, label %cond.end.us
+
+cond.false.us: ; preds = %for.body3.us
+ br label %cond.end.us
+
+cond.end.us: ; preds = %cond.false.us, %for.body3.us
+ %cond.us = phi i32 [ %div, %cond.false.us ], [ %conv7, %for.body3.us ]
+ %6 = load i32, i32* @b, align 4
+ %cmp91.us = icmp slt i32 %6, 1
+ br i1 %cmp91.us, label %for.inc.lr.ph.us, label %for.cond2.loopexit.us
+
+for.inc.us: ; preds = %for.inc.lr.ph.us, %for.inc.us
+ %7 = phi i32 [ %6, %for.inc.lr.ph.us ], [ %inc.us, %for.inc.us ]
+ %inc.us = add nsw i32 %7, 1
+ %cmp9.us = icmp slt i32 %inc.us, 1
+ br i1 %cmp9.us, label %for.inc.us, label %for.cond8.for.cond2.loopexit_crit_edge.us
+
+for.cond2.loopexit.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us, %cond.end.us
+ br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, label %for.body3.us
+
+for.inc.lr.ph.us: ; preds = %cond.end.us
+ br label %for.inc.us
+
+for.cond8.for.cond2.loopexit_crit_edge.us: ; preds = %for.inc.us
+ %inc.lcssa.us = phi i32 [ %inc.us, %for.inc.us ]
+ store i32 %inc.lcssa.us, i32* @b, align 4
+ br label %for.cond2.loopexit.us
+
+for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa: ; preds = %for.cond2.loopexit.us
+ %cond.lcssa.ph.us.ph = phi i32 [ %cond.us, %for.cond2.loopexit.us ]
+ br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
+
+for.cond2.for.inc13_crit_edge.us-lcssa.us: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us
+ %cond.lcssa.ph.us = phi i32 [ %cond.lcssa.ph.us.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa ], [ %cond.lcssa.ph.us.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us ]
+ br label %for.cond2.for.inc13_crit_edge
+
+for.body3.lr.ph.split: ; preds = %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
+ br i1 %tobool, label %for.body3.lr.ph.split.split.us, label %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
+
+for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge: ; preds = %for.body3.lr.ph.split
+ br label %for.body3.lr.ph.split.split
+
+for.body3.lr.ph.split.split.us: ; preds = %for.body3.lr.ph.split
+ br label %for.body3.us3
+
+for.body3.us3: ; preds = %for.cond2.loopexit.us11, %for.body3.lr.ph.split.split.us
+ br i1 false, label %cond.false.us4, label %cond.end.us5
+
+cond.false.us4: ; preds = %for.body3.us3
+ br label %cond.end.us5
+
+cond.end.us5: ; preds = %cond.false.us4, %for.body3.us3
+ %cond.us6 = phi i32 [ %div, %cond.false.us4 ], [ %conv7, %for.body3.us3 ]
+ %8 = load i32, i32* @b, align 4
+ %cmp91.us7 = icmp slt i32 %8, 1
+ br i1 %cmp91.us7, label %for.inc.lr.ph.us12, label %for.cond2.loopexit.us11
+
+for.inc.us8: ; preds = %for.inc.lr.ph.us12, %for.inc.us8
+ %9 = phi i32 [ %8, %for.inc.lr.ph.us12 ], [ %inc.us9, %for.inc.us8 ]
+ %inc.us9 = add nsw i32 %9, 1
+ %cmp9.us10 = icmp slt i32 %inc.us9, 1
+ br i1 %cmp9.us10, label %for.inc.us8, label %for.cond8.for.cond2.loopexit_crit_edge.us13
+
+for.cond2.loopexit.us11: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us13, %cond.end.us5
+ br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us, label %for.body3.us3
+
+for.inc.lr.ph.us12: ; preds = %cond.end.us5
+ br label %for.inc.us8
+
+for.cond8.for.cond2.loopexit_crit_edge.us13: ; preds = %for.inc.us8
+ %inc.lcssa.us14 = phi i32 [ %inc.us9, %for.inc.us8 ]
+ store i32 %inc.lcssa.us14, i32* @b, align 4
+ br label %for.cond2.loopexit.us11
+
+for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us: ; preds = %for.cond2.loopexit.us11
+ %cond.lcssa.ph.ph.us = phi i32 [ %cond.us6, %for.cond2.loopexit.us11 ]
+ br label %for.cond2.for.inc13_crit_edge.us-lcssa
+
+for.body3.lr.ph.split.split: ; preds = %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
+ br label %for.body3
+
+for.cond8.for.cond2.loopexit_crit_edge: ; preds = %for.inc
+ %inc.lcssa = phi i32 [ %inc, %for.inc ]
+ store i32 %inc.lcssa, i32* @b, align 4
+ br label %for.cond2.loopexit
+
+for.cond2.loopexit: ; preds = %cond.end, %for.cond8.for.cond2.loopexit_crit_edge
+ br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, label %for.body3
+
+for.body3: ; preds = %for.cond2.loopexit, %for.body3.lr.ph.split.split
+ br i1 false, label %cond.false, label %cond.end
+
+cond.false: ; preds = %for.body3
+ br label %cond.end
+
+cond.end: ; preds = %cond.false, %for.body3
+ %cond = phi i32 [ %div, %cond.false ], [ %conv7, %for.body3 ]
+ %10 = load i32, i32* @b, align 4
+ %cmp91 = icmp slt i32 %10, 1
+ br i1 %cmp91, label %for.inc.lr.ph, label %for.cond2.loopexit
+
+for.inc.lr.ph: ; preds = %cond.end
+ br label %for.inc
+
+for.inc: ; preds = %for.inc, %for.inc.lr.ph
+ %11 = phi i32 [ %10, %for.inc.lr.ph ], [ %inc, %for.inc ]
+ %inc = add nsw i32 %11, 1
+ %cmp9 = icmp slt i32 %inc, 1
+ br i1 %cmp9, label %for.inc, label %for.cond8.for.cond2.loopexit_crit_edge
+
+for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa: ; preds = %for.cond2.loopexit
+ %cond.lcssa.ph.ph = phi i32 [ %cond, %for.cond2.loopexit ]
+ br label %for.cond2.for.inc13_crit_edge.us-lcssa
+
+for.cond2.for.inc13_crit_edge.us-lcssa: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us
+ %cond.lcssa.ph = phi i32 [ %cond.lcssa.ph.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa ], [ %cond.lcssa.ph.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us ]
+ br label %for.cond2.for.inc13_crit_edge
+
+for.cond2.for.inc13_crit_edge: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us
+ %cond.lcssa = phi i32 [ %cond.lcssa.ph, %for.cond2.for.inc13_crit_edge.us-lcssa ], [ %cond.lcssa.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us ]
+ store i32 %cond.lcssa, i32* @c, align 4
+ br label %for.inc13
+
+for.inc13: ; preds = %for.cond2.for.inc13_crit_edge, %for.cond2.preheader
+ %inc14 = add i8 %storemerge15, 1
+ %cmp = icmp ugt i8 %inc14, 50
+ br i1 %cmp, label %for.cond2.preheader, label %for.end15
+
+for.end15: ; preds = %for.inc13
+ ret void
+}
Removed: llvm/trunk/test/Transforms/IndVarSimplify/pr20680.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/pr20680.ll?rev=365261&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/IndVarSimplify/pr20680.ll (original)
+++ llvm/trunk/test/Transforms/IndVarSimplify/pr20680.ll (removed)
@@ -1,223 +0,0 @@
-; RUN: opt < %s -indvars -S | FileCheck %s
-
-; Provide legal integer types.
-target datalayout = "n8:16:32:64"
-
-
- at a = common global i32 0, align 4
- at c = common global i32 0, align 4
- at b = common global i32 0, align 4
-
-define void @f() {
-; CHECK-LABEL: @f(
-; CHECK-LABEL: entry:
-; CHECK: br label %[[for_cond2_preheader:.*]]
-
-; CHECK: [[for_cond2_preheader]]:
-; CHECK-NEXT: %[[indvars_iv:.*]] = phi i32 [ %[[indvars_iv_next:.*]], %[[for_inc13:.*]] ], [ -14, %entry ]
-; br i1 {{.*}}, label %[[for_inc13]], label %
-entry:
- %0 = load i32, i32* @a, align 4
- %tobool2 = icmp eq i32 %0, 0
- %1 = load i32, i32* @a, align 4
- %tobool = icmp eq i32 %1, 0
- br label %for.cond2.preheader
-
-for.cond2.preheader: ; preds = %for.inc13, %entry
- %storemerge15 = phi i8 [ -14, %entry ], [ %inc14, %for.inc13 ]
- br i1 %tobool2, label %for.inc13, label %for.body3.lr.ph
-
-for.body3.lr.ph: ; preds = %for.cond2.preheader
- %tobool5 = icmp eq i8 %storemerge15, 0
- %conv7 = sext i8 %storemerge15 to i32
- %2 = add nsw i32 %conv7, 1
- %3 = icmp ult i32 %2, 3
- %div = select i1 %3, i32 %conv7, i32 0
- br i1 %tobool5, label %for.body3.lr.ph.split.us, label %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
-
-for.body3.lr.ph.for.body3.lr.ph.split_crit_edge: ; preds = %for.body3.lr.ph
- br label %for.body3.lr.ph.split
-
-for.body3.lr.ph.split.us: ; preds = %for.body3.lr.ph
- br i1 %tobool, label %for.body3.lr.ph.split.us.split.us, label %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
-
-for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge: ; preds = %for.body3.lr.ph.split.us
- br label %for.body3.lr.ph.split.us.split
-
-for.body3.lr.ph.split.us.split.us: ; preds = %for.body3.lr.ph.split.us
- br label %for.body3.us.us
-
-for.body3.us.us: ; preds = %for.cond2.loopexit.us.us, %for.body3.lr.ph.split.us.split.us
- br i1 true, label %cond.false.us.us, label %cond.end.us.us
-
-cond.false.us.us: ; preds = %for.body3.us.us
- br label %cond.end.us.us
-
-cond.end.us.us: ; preds = %cond.false.us.us, %for.body3.us.us
- %cond.us.us = phi i32 [ %div, %cond.false.us.us ], [ %conv7, %for.body3.us.us ]
- %4 = load i32, i32* @b, align 4
- %cmp91.us.us = icmp slt i32 %4, 1
- br i1 %cmp91.us.us, label %for.inc.lr.ph.us.us, label %for.cond2.loopexit.us.us
-
-for.cond2.loopexit.us.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us.us, %cond.end.us.us
- br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us, label %for.body3.us.us
-
-for.inc.lr.ph.us.us: ; preds = %cond.end.us.us
- br label %for.inc.us.us
-
-for.cond8.for.cond2.loopexit_crit_edge.us.us: ; preds = %for.inc.us.us
- %inc.lcssa.us.us = phi i32 [ %inc.us.us, %for.inc.us.us ]
- store i32 %inc.lcssa.us.us, i32* @b, align 4
- br label %for.cond2.loopexit.us.us
-
-for.inc.us.us: ; preds = %for.inc.us.us, %for.inc.lr.ph.us.us
- %5 = phi i32 [ %4, %for.inc.lr.ph.us.us ], [ %inc.us.us, %for.inc.us.us ]
- %inc.us.us = add nsw i32 %5, 1
- %cmp9.us.us = icmp slt i32 %inc.us.us, 1
- br i1 %cmp9.us.us, label %for.inc.us.us, label %for.cond8.for.cond2.loopexit_crit_edge.us.us
-
-for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us: ; preds = %for.cond2.loopexit.us.us
- %cond.lcssa.ph.us.ph.us = phi i32 [ %cond.us.us, %for.cond2.loopexit.us.us ]
- br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
-
-for.body3.lr.ph.split.us.split: ; preds = %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
- br label %for.body3.us
-
-for.body3.us: ; preds = %for.cond2.loopexit.us, %for.body3.lr.ph.split.us.split
- br i1 true, label %cond.false.us, label %cond.end.us
-
-cond.false.us: ; preds = %for.body3.us
- br label %cond.end.us
-
-cond.end.us: ; preds = %cond.false.us, %for.body3.us
- %cond.us = phi i32 [ %div, %cond.false.us ], [ %conv7, %for.body3.us ]
- %6 = load i32, i32* @b, align 4
- %cmp91.us = icmp slt i32 %6, 1
- br i1 %cmp91.us, label %for.inc.lr.ph.us, label %for.cond2.loopexit.us
-
-for.inc.us: ; preds = %for.inc.lr.ph.us, %for.inc.us
- %7 = phi i32 [ %6, %for.inc.lr.ph.us ], [ %inc.us, %for.inc.us ]
- %inc.us = add nsw i32 %7, 1
- %cmp9.us = icmp slt i32 %inc.us, 1
- br i1 %cmp9.us, label %for.inc.us, label %for.cond8.for.cond2.loopexit_crit_edge.us
-
-for.cond2.loopexit.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us, %cond.end.us
- br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, label %for.body3.us
-
-for.inc.lr.ph.us: ; preds = %cond.end.us
- br label %for.inc.us
-
-for.cond8.for.cond2.loopexit_crit_edge.us: ; preds = %for.inc.us
- %inc.lcssa.us = phi i32 [ %inc.us, %for.inc.us ]
- store i32 %inc.lcssa.us, i32* @b, align 4
- br label %for.cond2.loopexit.us
-
-for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa: ; preds = %for.cond2.loopexit.us
- %cond.lcssa.ph.us.ph = phi i32 [ %cond.us, %for.cond2.loopexit.us ]
- br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
-
-for.cond2.for.inc13_crit_edge.us-lcssa.us: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us
- %cond.lcssa.ph.us = phi i32 [ %cond.lcssa.ph.us.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa ], [ %cond.lcssa.ph.us.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us ]
- br label %for.cond2.for.inc13_crit_edge
-
-for.body3.lr.ph.split: ; preds = %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
- br i1 %tobool, label %for.body3.lr.ph.split.split.us, label %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
-
-for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge: ; preds = %for.body3.lr.ph.split
- br label %for.body3.lr.ph.split.split
-
-for.body3.lr.ph.split.split.us: ; preds = %for.body3.lr.ph.split
- br label %for.body3.us3
-
-for.body3.us3: ; preds = %for.cond2.loopexit.us11, %for.body3.lr.ph.split.split.us
- br i1 false, label %cond.false.us4, label %cond.end.us5
-
-cond.false.us4: ; preds = %for.body3.us3
- br label %cond.end.us5
-
-cond.end.us5: ; preds = %cond.false.us4, %for.body3.us3
- %cond.us6 = phi i32 [ %div, %cond.false.us4 ], [ %conv7, %for.body3.us3 ]
- %8 = load i32, i32* @b, align 4
- %cmp91.us7 = icmp slt i32 %8, 1
- br i1 %cmp91.us7, label %for.inc.lr.ph.us12, label %for.cond2.loopexit.us11
-
-for.inc.us8: ; preds = %for.inc.lr.ph.us12, %for.inc.us8
- %9 = phi i32 [ %8, %for.inc.lr.ph.us12 ], [ %inc.us9, %for.inc.us8 ]
- %inc.us9 = add nsw i32 %9, 1
- %cmp9.us10 = icmp slt i32 %inc.us9, 1
- br i1 %cmp9.us10, label %for.inc.us8, label %for.cond8.for.cond2.loopexit_crit_edge.us13
-
-for.cond2.loopexit.us11: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us13, %cond.end.us5
- br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us, label %for.body3.us3
-
-for.inc.lr.ph.us12: ; preds = %cond.end.us5
- br label %for.inc.us8
-
-for.cond8.for.cond2.loopexit_crit_edge.us13: ; preds = %for.inc.us8
- %inc.lcssa.us14 = phi i32 [ %inc.us9, %for.inc.us8 ]
- store i32 %inc.lcssa.us14, i32* @b, align 4
- br label %for.cond2.loopexit.us11
-
-for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us: ; preds = %for.cond2.loopexit.us11
- %cond.lcssa.ph.ph.us = phi i32 [ %cond.us6, %for.cond2.loopexit.us11 ]
- br label %for.cond2.for.inc13_crit_edge.us-lcssa
-
-for.body3.lr.ph.split.split: ; preds = %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
- br label %for.body3
-
-for.cond8.for.cond2.loopexit_crit_edge: ; preds = %for.inc
- %inc.lcssa = phi i32 [ %inc, %for.inc ]
- store i32 %inc.lcssa, i32* @b, align 4
- br label %for.cond2.loopexit
-
-for.cond2.loopexit: ; preds = %cond.end, %for.cond8.for.cond2.loopexit_crit_edge
- br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, label %for.body3
-
-for.body3: ; preds = %for.cond2.loopexit, %for.body3.lr.ph.split.split
- br i1 false, label %cond.false, label %cond.end
-
-cond.false: ; preds = %for.body3
- br label %cond.end
-
-cond.end: ; preds = %cond.false, %for.body3
- %cond = phi i32 [ %div, %cond.false ], [ %conv7, %for.body3 ]
- %10 = load i32, i32* @b, align 4
- %cmp91 = icmp slt i32 %10, 1
- br i1 %cmp91, label %for.inc.lr.ph, label %for.cond2.loopexit
-
-for.inc.lr.ph: ; preds = %cond.end
- br label %for.inc
-
-for.inc: ; preds = %for.inc, %for.inc.lr.ph
- %11 = phi i32 [ %10, %for.inc.lr.ph ], [ %inc, %for.inc ]
- %inc = add nsw i32 %11, 1
- %cmp9 = icmp slt i32 %inc, 1
- br i1 %cmp9, label %for.inc, label %for.cond8.for.cond2.loopexit_crit_edge
-
-for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa: ; preds = %for.cond2.loopexit
- %cond.lcssa.ph.ph = phi i32 [ %cond, %for.cond2.loopexit ]
- br label %for.cond2.for.inc13_crit_edge.us-lcssa
-
-for.cond2.for.inc13_crit_edge.us-lcssa: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us
- %cond.lcssa.ph = phi i32 [ %cond.lcssa.ph.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa ], [ %cond.lcssa.ph.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us ]
- br label %for.cond2.for.inc13_crit_edge
-
-for.cond2.for.inc13_crit_edge: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us
- %cond.lcssa = phi i32 [ %cond.lcssa.ph, %for.cond2.for.inc13_crit_edge.us-lcssa ], [ %cond.lcssa.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us ]
- store i32 %cond.lcssa, i32* @c, align 4
- br label %for.inc13
-
-; CHECK: [[for_inc13]]:
-; CHECK-NEXT: %[[indvars_iv_next]] = add nsw i32 %[[indvars_iv]], 1
-; CHECK-NEXT: %[[exitcond4:.*]] = icmp ne i32 %[[indvars_iv_next]], 0
-; CHECK-NEXT: br i1 %[[exitcond4]], label %[[for_cond2_preheader]], label %[[for_end15:.*]]
-for.inc13: ; preds = %for.cond2.for.inc13_crit_edge, %for.cond2.preheader
- %inc14 = add i8 %storemerge15, 1
- %cmp = icmp ugt i8 %inc14, 50
- br i1 %cmp, label %for.cond2.preheader, label %for.end15
-
-; CHECK: [[for_end15]]:
-; CHECK-NEXT: ret void
-for.end15: ; preds = %for.inc13
- ret void
-}
More information about the llvm-commits
mailing list