brintos

brintos / llvm-project-archived public Read only

0
0
Text · 729 B · 64b223b Raw
31 lines · plain
1; RUN: opt -passes=indvars -S < %s | FileCheck %s2 3declare void @use(i32)4declare void @use.i8(i8)5 6define void @f() {7; CHECK-LABEL: @f8 entry:9  br label %loop10 11 loop:12; The only use for idx.mirror is to induce an nuw for %idx.  It does13; not induce an nuw for %idx.inc14  %idx.mirror = phi i8 [ -6, %entry ], [ %idx.mirror.inc, %loop ]15  %idx = phi i8 [ -5, %entry ], [ %idx.inc, %loop ]16 17  %idx.sext = sext i8 %idx to i3218  call void @use(i32 %idx.sext)19 20  %idx.mirror.inc = add nuw i8 %idx.mirror, 121  call void @use.i8(i8 %idx.mirror.inc)22 23  %idx.inc = add i8 %idx, 124; CHECK-NOT: %indvars.iv.next = add nuw nsw i32 %indvars.iv, 125  %cmp = icmp ugt i8 %idx.inc, 026  br i1 %cmp, label %loop, label %exit27 28 exit:29  ret void30}31