Skip to content
12 changes: 6 additions & 6 deletions llvm/test/Transforms/LoopInterchange/lcssa.ll
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ for.end16: ; preds = %for.exit
; REMARK: Interchanged
; REMARK-NEXT: lcssa_05

define void @lcssa_05(ptr %ptr) {
define void @lcssa_05(ptr %ptr, i1 %arg) {
entry:
br label %outer.header

Expand All @@ -190,7 +190,7 @@ outer.header: ; preds = %outer.inc, %entry

for.body3: ; preds = %bb3, %outer.header
%iv.inner = phi i64 [ %iv.inner.next, %bb3 ], [ 1, %outer.header ]
br i1 undef, label %bb2, label %bb3
br i1 %arg, label %bb2, label %bb3

bb2: ; preds = %for.body3
%arrayidx5 = getelementptr inbounds [100 x [100 x i32]], ptr @A, i64 0, i64 %iv.inner, i64 %iv.outer
Expand Down Expand Up @@ -225,13 +225,13 @@ for.end16: ; preds = %for.exit
; REMARK: UnsupportedExitPHI
; REMARK-NEXT: lcssa_06

define void @lcssa_06(ptr %ptr, ptr %ptr1) {
define void @lcssa_06(ptr %ptr, ptr %ptr1, i1 %arg) {
entry:
br label %outer.header

outer.header: ; preds = %outer.inc, %entry
%iv.outer = phi i64 [ 1, %entry ], [ %iv.outer.next, %outer.inc ]
br i1 undef, label %for.body3, label %outer.inc
br i1 %arg, label %for.body3, label %outer.inc

for.body3: ; preds = %for.body3, %outer.header
%iv.inner = phi i64 [ %iv.inner.next, %for.body3 ], [ 1, %outer.header ]
Expand Down Expand Up @@ -305,13 +305,13 @@ for.end16: ; preds = %for.exit
; is an lcssa phi node outside the loopnest.
; REMARK: Interchanged
; REMARK-NEXT: lcssa_08
define i64 @lcssa_08(ptr %Arr) {
define i64 @lcssa_08(ptr %Arr, i1 %arg) {
entry:
br label %for1.header

for1.header: ; preds = %for1.inc, %entry
%indvars.iv23 = phi i64 [ 0, %entry ], [ %indvars.iv.next24, %for1.inc ]
br i1 undef, label %for2, label %for1.inc
br i1 %arg, label %for2, label %for1.inc

for2: ; preds = %for2, %for1.header
%indvars.iv = phi i64 [ 0, %for1.header ], [ %indvars.iv.next.3, %for2 ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ for.cond1.for.end_crit_edge: ; preds = %for.inc

for.inc3: ; preds = %for.cond1.for.end_crit_edge
%inc4 = add nsw i32 %inc41, 1
br i1 undef, label %for.body, label %for.cond.for.end5_crit_edge
br i1 false, label %for.body, label %for.cond.for.end5_crit_edge

for.cond.for.end5_crit_edge: ; preds = %for.inc3
ret void
Expand Down Expand Up @@ -86,7 +86,7 @@ for.cond1.for.end_crit_edge: ; preds = %for.inc

for.inc3: ; preds = %for.cond1.for.end_crit_edge
%inc4 = add nsw i32 %inc41, 1
br i1 undef, label %for.body, label %for.cond.for.end5_crit_edge
br i1 false, label %for.body, label %for.cond.for.end5_crit_edge

for.cond.for.end5_crit_edge: ; preds = %for.inc3
ret void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
; In the 2 test cases below, we have a LCSSA PHI in the inner loop exit, which
; is used in the outer loop latch. This is not supported.

define void @test1() {
define void @test1(i1 %arg) {
; CHECK-LABEL: @test1(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[OUTER_HEADER:%.*]]
Expand All @@ -19,12 +19,12 @@ define void @test1() {
; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[IDX]], align 8
; CHECK-NEXT: store double undef, ptr [[IDX]], align 8
; CHECK-NEXT: [[INNER_IV_NEXT]] = add nuw nsw i64 [[INNER_IV]], 1
; CHECK-NEXT: br i1 false, label [[INNER]], label [[OUTER_LATCH]]
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[INNER]], label [[OUTER_LATCH]]
; CHECK: outer.latch:
; CHECK-NEXT: [[INC43_LCSSA_WIDE_US:%.*]] = phi i64 [ [[INNER_IV_NEXT]], [[INNER]] ]
; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[INC43_LCSSA_WIDE_US]] to i32
; CHECK-NEXT: [[OUTER_IV_NEXT]] = add nsw i64 [[OUTER_IV]], 1
; CHECK-NEXT: br i1 false, label [[OUTER_HEADER]], label [[OUTER_EXIT:%.*]]
; CHECK-NEXT: br i1 [[ARG]], label [[OUTER_HEADER]], label [[OUTER_EXIT:%.*]]
; CHECK: outer.exit:
; CHECK-NEXT: ret void
;
Expand All @@ -41,20 +41,20 @@ inner: ; preds = %for.body28.us, %for.body25.
%0 = load double, ptr %idx, align 8
store double undef, ptr %idx, align 8
%inner.iv.next = add nuw nsw i64 %inner.iv, 1
br i1 undef, label %inner, label %outer.latch
br i1 %arg, label %inner, label %outer.latch

outer.latch: ; preds = %inner
%inc43.lcssa.wide.us = phi i64 [ %inner.iv.next, %inner ]
%1 = trunc i64 %inc43.lcssa.wide.us to i32
%outer.iv.next = add nsw i64 %outer.iv, 1
br i1 undef, label %outer.header, label %outer.exit
br i1 %arg, label %outer.header, label %outer.exit

outer.exit: ; preds = %for.cond26.for.end44_crit_edge.us
ret void
}

; Same as @test1, but with a dedicated inner loop exit block.
define void @test2() {
define void @test2(i1 %arg) {
; CHECK-LABEL: @test2(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[OUTER_HEADER:%.*]]
Expand All @@ -67,14 +67,14 @@ define void @test2() {
; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[IDX]], align 8
; CHECK-NEXT: store double undef, ptr [[IDX]], align 8
; CHECK-NEXT: [[INNER_IV_NEXT]] = add nuw nsw i64 [[INNER_IV]], 1
; CHECK-NEXT: br i1 false, label [[INNER]], label [[INNER_EXIT:%.*]]
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[INNER]], label [[INNER_EXIT:%.*]]
; CHECK: inner.exit:
; CHECK-NEXT: [[INC43_LCSSA_WIDE_US:%.*]] = phi i64 [ [[INNER_IV_NEXT]], [[INNER]] ]
; CHECK-NEXT: br label [[OUTER_LATCH]]
; CHECK: outer.latch:
; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[INC43_LCSSA_WIDE_US]] to i32
; CHECK-NEXT: [[OUTER_IV_NEXT]] = add nsw i64 [[OUTER_IV]], 1
; CHECK-NEXT: br i1 false, label [[OUTER_HEADER]], label [[OUTER_EXIT:%.*]]
; CHECK-NEXT: br i1 [[ARG]], label [[OUTER_HEADER]], label [[OUTER_EXIT:%.*]]
; CHECK: outer.exit:
; CHECK-NEXT: ret void
;
Expand All @@ -91,7 +91,7 @@ inner: ; preds = %for.body28.us, %for.body25.
%0 = load double, ptr %idx, align 8
store double undef, ptr %idx, align 8
%inner.iv.next = add nuw nsw i64 %inner.iv, 1
br i1 undef, label %inner, label %inner.exit
br i1 %arg, label %inner, label %inner.exit

inner.exit:
%inc43.lcssa.wide.us = phi i64 [ %inner.iv.next, %inner ]
Expand All @@ -100,7 +100,7 @@ inner.exit:
outer.latch: ; preds = %inner
%1 = trunc i64 %inc43.lcssa.wide.us to i32
%outer.iv.next = add nsw i64 %outer.iv, 1
br i1 undef, label %outer.header, label %outer.exit
br i1 %arg, label %outer.header, label %outer.exit

outer.exit: ; preds = %for.cond26.for.end44_crit_edge.us
ret void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,15 @@ inner.header: ; preds = %for.inc, %for.bo

inner.latch: ; preds = %for.body6
%inner.idx.inc = add nsw i64 %inner.idx, 1
br i1 undef, label %inner.header, label %inner.exit
br i1 false, label %inner.header, label %inner.exit

inner.exit: ; preds = %for.inc
%outer.v = add nsw i64 %outer.idx, 1
br label %outer.latch

outer.latch: ; preds = %for.end
%outer.idx.inc = add nsw i64 %outer.idx, 1
br i1 undef, label %outer.header, label %outer.exit
br i1 false, label %outer.header, label %outer.exit

outer.exit: ; preds = %for.inc27
%exit1.lcssa = phi i64 [ %outer.v, %outer.latch ]
Expand Down Expand Up @@ -133,15 +133,15 @@ inner.header: ; preds = %for.inc, %for.bo

inner.latch: ; preds = %for.body6
%inner.idx.inc = add nsw i64 %inner.idx , 1
br i1 undef, label %inner.header, label %inner.exit
br i1 false, label %inner.header, label %inner.exit

inner.exit: ; preds = %for.inc
%outer.v = add nsw i64 %outer.idx, 1
br label %outer.latch

outer.latch: ; preds = %for.end
%outer.idx.inc = add nsw i64 %outer.idx, 1
br i1 undef, label %outer.header, label %outer.exit
br i1 false, label %outer.header, label %outer.exit

outer.exit: ; preds = %for.inc27
%exit1.lcssa = phi i64 [ 0, %entry ], [ %outer.v, %outer.latch ]
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/Transforms/LoopInterchange/pr57148.ll
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,11 @@ vector.body85: ; preds = %vector.body85, %for
%1 = getelementptr inbounds [512 x [4 x i32]], ptr @b, i16 0, i16 %0, i16 %j.165
%2 = load i32, ptr %1, align 1
%index.next87 = add nuw i16 %index86, 4
br i1 undef, label %middle.block80, label %vector.body85
br i1 true, label %middle.block80, label %vector.body85

middle.block80: ; preds = %vector.body85
%inc66 = add nuw nsw i16 %j.165, 1
br i1 undef, label %for.inc68, label %for.cond37.preheader
br i1 true, label %for.inc68, label %for.cond37.preheader

for.inc68: ; preds = %middle.block80
%inc69 = add nuw nsw i16 %i.166, 1
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/Transforms/LoopLoadElim/pr-48150.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define void @test() {
define void @test(i1 %arg) {
; CHECK-LABEL: test
bb:
br i1 undef, label %bb1, label %bb2
br i1 %arg, label %bb1, label %bb2

bb1: ; preds = %bb
ret void
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/Transforms/LoopLoadElim/pr47457.ll
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16
target triple = "x86_64-unknown-linux-gnu"

; Make sure it does not crash with assert.
define void @test() {
define void @test(i1 %arg) {
; CHECK-LABEL: test

bb:
br label %bb1

bb1: ; preds = %bb6, %bb1, %bb
%tmp = phi i32 [ undef, %bb ], [ 0, %bb1 ], [ %tmp3, %bb6 ]
br i1 undef, label %bb1, label %bb2
br i1 %arg, label %bb1, label %bb2

bb2: ; preds = %bb1
%tmp3 = add i32 %tmp, 1
Expand All @@ -24,7 +24,7 @@ bb5: ; preds = %bb2
ret void

bb6: ; preds = %bb2
br i1 undef, label %bb7, label %bb1
br i1 %arg, label %bb7, label %bb1

bb7: ; preds = %bb7, %bb6
%tmp8 = phi i32 [ %tmp15, %bb7 ], [ %tmp3, %bb6 ]
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/Transforms/LoopPredication/predicate-exits.ll
Original file line number Diff line number Diff line change
Expand Up @@ -1117,7 +1117,7 @@ bb3: ; preds = %bb

bb4: ; preds = %bb6, %bb3
%tmp5 = phi i32 [ %tmp7, %bb6 ], [ 0, %bb3 ]
br i1 undef, label %bb10, label %bb6
br i1 true, label %bb10, label %bb6

bb6: ; preds = %bb4
%tmp7 = add nuw nsw i32 %tmp5, 1
Expand Down
14 changes: 7 additions & 7 deletions llvm/test/Transforms/LoopRotate/crash.ll
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-apple-darwin10.0.0"

; PR8955 - Rotating an outer loop that has a condbr for a latch block.
define void @test1() nounwind ssp {
define void @test1(i1 %arg) nounwind ssp {
entry:
br label %lbl_283

lbl_283: ; preds = %if.end, %entry
br i1 undef, label %if.else, label %if.then
br i1 %arg, label %if.else, label %if.then

if.then: ; preds = %lbl_283
br i1 undef, label %if.end, label %for.condthread-pre-split
br i1 %arg, label %if.end, label %for.condthread-pre-split

for.condthread-pre-split: ; preds = %if.then
br label %for.cond

for.cond: ; preds = %for.cond, %for.condthread-pre-split
br i1 undef, label %lbl_281, label %for.cond
br i1 %arg, label %lbl_281, label %for.cond

lbl_281: ; preds = %if.end, %for.cond
br label %if.end

if.end: ; preds = %lbl_281, %if.then
br i1 undef, label %lbl_283, label %lbl_281
br i1 %arg, label %lbl_283, label %lbl_281

if.else: ; preds = %lbl_283
ret void
Expand Down Expand Up @@ -140,12 +140,12 @@ bb17: ; preds = %bb15


; PR9523 - Non-canonical loop.
define void @test7(ptr %P) nounwind {
define void @test7(ptr %P, i1 %arg) nounwind {
entry:
indirectbr ptr %P, [label %"3", label %"5"]

"3": ; preds = %"4", %entry
br i1 undef, label %"5", label %"4"
br i1 %arg, label %"5", label %"4"

"4": ; preds = %"3"
br label %"3"
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/Transforms/LoopRotate/multiple-exits.ll
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +199,12 @@ declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

define void @test4() nounwind uwtable {
define void @test4(i1 %arg) nounwind uwtable {
entry:
br label %"7"

"3": ; preds = %"7"
br i1 undef, label %"31", label %"4"
br i1 %arg, label %"31", label %"4"

"4": ; preds = %"3"
%. = select i1 undef, float 0x3F50624DE0000000, float undef
Expand All @@ -217,7 +217,7 @@ entry:
br i1 %2, label %"3", label %"8"

"8": ; preds = %"7"
br i1 undef, label %"9", label %"31"
br i1 %arg, label %"9", label %"31"

"9": ; preds = %"8"
br label %"33"
Expand All @@ -226,7 +226,7 @@ entry:
unreachable

"31": ; preds = %"8", %"3"
br i1 undef, label %"27", label %"32"
br i1 %arg, label %"27", label %"32"

"32": ; preds = %"31"
br label %"33"
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/Transforms/LoopRotate/pr22337.ll
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
@a = external global i8, align 4
@tmp = global ptr @a

define void @f() {
define void @f(i1 %arg) {
; CHECK-LABEL: define void @f(
; CHECK: getelementptr i8, ptr @a, i32 1
entry:
br label %for.preheader

for.preheader:
br i1 undef, label %if.then8, label %for.body
br i1 %arg, label %if.then8, label %for.body

for.body:
br i1 undef, label %if.end, label %if.then8
br i1 %arg, label %if.end, label %if.then8

if.end:
%arrayidx = getelementptr i8, ptr @a, i32 1
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/Transforms/LoopRotate/pr33701.ll
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
; RUN: opt < %s -passes=loop-rotate -verify-dom-info -verify-loop-info -verify-memoryssa -disable-output

define void @func() {
define void @func(i1 %arg) {
bb0:
br label %bb1

Expand All @@ -10,7 +10,7 @@ bb1: ; preds = %bb4, %bb0
br i1 %1, label %bb2, label %bb5

bb2: ; preds = %bb1
br i1 undef, label %bb6, label %bb4
br i1 %arg, label %bb6, label %bb4

bb3: ; No predecessors!
br label %bb6
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/Transforms/LoopRotate/pr37205.ll
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ if.then: ; preds = %for.cond
br label %for.cond1

for.cond1: ; preds = %for.cond4, %if.then
br i1 undef, label %for.body, label %for.end6
br i1 false, label %for.body, label %for.end6

for.body: ; preds = %for.cond1
br i1 false, label %if.then3, label %if.end
Expand Down
Loading