brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 84aaea5 Raw
56 lines · plain
1; RUN: opt -S -passes=indvars < %s | FileCheck %s2 3declare void @side_effect(i1)4 5define void @latch_dominating_0(i8 %start) {6; CHECK-LABEL: latch_dominating_07 entry:8  %e = icmp slt i8 %start, 429  br i1 %e, label %loop, label %exit10 11 loop:12; CHECK-LABEL: loop13  %idx = phi i8 [ %start, %entry ], [ %idx.inc, %be ]14  %idx.inc = add i8 %idx, 115  %folds.to.true = icmp slt i8 %idx, 4216; CHECK: call void @side_effect(i1 true)17  call void @side_effect(i1 %folds.to.true)18  %c0 = icmp slt i8 %idx.inc, 4219  br i1 %c0, label %be, label %exit20 21 be:22; CHECK: call void @side_effect(i1 true)23  call void @side_effect(i1 %folds.to.true)24  %c1 = icmp slt i8 %idx.inc, 10025  br i1 %c1, label %loop, label %exit26 27 exit:28  ret void29}30 31define void @latch_dominating_1(i8 %start) {32; CHECK-LABEL: latch_dominating_133 entry:34  %e = icmp slt i8 %start, 4235  br i1 %e, label %loop, label %exit36 37 loop:38; CHECK-LABEL: loop39  %idx = phi i8 [ %start, %entry ], [ %idx.inc, %be ]40  %idx.inc = add i8 %idx, 141  %does.not.fold.to.true = icmp slt i8 %idx, 4242; CHECK: call void @side_effect(i1 %does.not.fold.to.true)43  call void @side_effect(i1 %does.not.fold.to.true)44  %c0 = icmp slt i8 %idx.inc, 4245  br i1 %c0, label %be, label %be46 47 be:48; CHECK: call void @side_effect(i1 %does.not.fold.to.true)49  call void @side_effect(i1 %does.not.fold.to.true)50  %c1 = icmp slt i8 %idx.inc, 10051  br i1 %c1, label %loop, label %exit52 53 exit:54  ret void55}56