46 lines · plain
1; RUN: opt -disable-output "-passes=print<scalar-evolution>" < %s 2>&1 | FileCheck %s2 3define void @f(ptr %condition) {4; CHECK-LABEL: Classifying expressions for: @f5 entry: 6 br label %loop7 8 loop:9 %idx = phi i32 [ 0, %entry ], [ %idx.inc, %loop ]10 %idx.inc = add nsw i32 %idx, 111 12 %idx.inc2 = add i32 %idx.inc, 113 %idx.inc2.zext = zext i32 %idx.inc2 to i6414 15; CHECK: %idx.inc2.zext = zext i32 %idx.inc2 to i6416; CHECK-NEXT: --> {2,+,1}<nuw><%loop>17 18 %c = load volatile i1, ptr %condition19 br i1 %c, label %loop, label %exit20 21 exit:22 ret void23}24 25define void @g(ptr %condition) {26; CHECK-LABEL: Classifying expressions for: @g27 entry:28 br label %loop29 30 loop:31 %idx = phi i32 [ 0, %entry ], [ %idx.inc, %loop ]32 %idx.inc = add nsw i32 %idx, 333 34 %idx.inc2 = add i32 %idx.inc, -135 %idx.inc2.sext = sext i32 %idx.inc2 to i6436; CHECK: %idx.inc2.sext = sext i32 %idx.inc2 to i6437; CHECK-NEXT: --> {2,+,3}<nuw><nsw><%loop>38 39 %cond.gep = getelementptr inbounds i1, ptr %condition, i32 %idx.inc40 %c = load volatile i1, ptr %cond.gep41 br i1 %c, label %loop, label %exit42 43 exit:44 ret void45}46