brintos

brintos / llvm-project-archived public Read only

0
0
Text · 944 B · fbb552a Raw
42 lines · plain
1; RUN: opt -S -passes=indvars < %s | FileCheck %s2 3; Check that SCEV does not assume sub nuw X Y == add nuw X, -Y4define void @f(ptr %loc) {5; CHECK-LABEL: @f6 entry:7  br label %loop8 9 loop:10  %idx = phi i32 [ 6, %entry ], [ %idx.dec, %loop ]11  store i32 %idx, ptr %loc12  %idx.dec = sub nuw i32 %idx, 113  %cond = icmp uge i32 %idx.dec, 514  br i1 %cond, label %loop, label %exit15; CHECK-NOT: br i1 true, label %loop, label %exit16 17 exit:18  ret void19}20 21declare void @use_i1(i1)22 23; Check that SCEV does not assume sub nsw X Y == add nsw X, -Y24define void @g(i32 %lim) {25; CHECK-LABEL: @g26 entry:27  br label %loop28 29 loop:30  %idx = phi i32 [ -1, %entry ], [ %idx.dec, %loop ]31  %t = icmp sgt i32 %idx, 032; CHECK-NOT:   call void @use_i1(i1 false)33; CHECK: call void @use_i1(i1 %t)34  call void @use_i1(i1 %t)35  %idx.dec = sub nsw i32 %idx, -214748364836  %cond = icmp eq i32 %idx.dec, %lim37  br i1 %cond, label %loop, label %exit38 39 exit:40  ret void41}42