Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/Analysis/ScalarEvolution/infer-prestart-no-wrap.ll
; ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s | ; ; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s | ||||
define void @infer.sext.0(i1* %c, i32 %start) { | define void @infer.sext.0(i1* %c, i32 %start, i32* %buf) { | ||||
; CHECK-LABEL: Classifying expressions for: @infer.sext.0 | ; CHECK-LABEL: Classifying expressions for: @infer.sext.0 | ||||
entry: | entry: | ||||
br label %loop | br label %loop | ||||
loop: | loop: | ||||
%counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ] | %counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ] | ||||
%idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ] | %idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ] | ||||
%idx.inc = add nsw i32 %idx, 1 | %idx.inc = add nsw i32 %idx, 1 | ||||
%idx.inc.sext = sext i32 %idx.inc to i64 | %idx.inc.sext = sext i32 %idx.inc to i64 | ||||
; CHECK: %idx.inc.sext = sext i32 %idx.inc to i64 | ; CHECK: %idx.inc.sext = sext i32 %idx.inc to i64 | ||||
; CHECK-NEXT: --> {(1 + (sext i32 %start to i64))<nsw>,+,1}<nsw><%loop> | ; CHECK-NEXT: --> {(1 + (sext i32 %start to i64))<nsw>,+,1}<nsw><%loop> | ||||
%buf.gep = getelementptr inbounds i32, i32* %buf, i32 %idx.inc | |||||
%val = load i32, i32* %buf.gep | |||||
%condition = icmp eq i32 %counter, 1 | %condition = icmp eq i32 %counter, 1 | ||||
%counter.inc = add i32 %counter, 1 | %counter.inc = add i32 %counter, 1 | ||||
br i1 %condition, label %exit, label %loop | br i1 %condition, label %exit, label %loop | ||||
exit: | exit: | ||||
ret void | ret void | ||||
} | } | ||||
define void @infer.zext.0(i1* %c, i32 %start) { | define void @infer.zext.0(i1* %c, i32 %start, i32* %buf) { | ||||
; CHECK-LABEL: Classifying expressions for: @infer.zext.0 | ; CHECK-LABEL: Classifying expressions for: @infer.zext.0 | ||||
entry: | entry: | ||||
br label %loop | br label %loop | ||||
loop: | loop: | ||||
%counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ] | %counter = phi i32 [ 0, %entry ], [ %counter.inc, %loop ] | ||||
%idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ] | %idx = phi i32 [ %start, %entry ], [ %idx.inc, %loop ] | ||||
%idx.inc = add nuw i32 %idx, 1 | %idx.inc = add nuw i32 %idx, 1 | ||||
%idx.inc.sext = zext i32 %idx.inc to i64 | %idx.inc.sext = zext i32 %idx.inc to i64 | ||||
; CHECK: %idx.inc.sext = zext i32 %idx.inc to i64 | ; CHECK: %idx.inc.sext = zext i32 %idx.inc to i64 | ||||
; CHECK-NEXT: --> {(1 + (zext i32 %start to i64))<nuw><nsw>,+,1}<nuw><%loop> | ; CHECK-NEXT: --> {(1 + (zext i32 %start to i64))<nuw><nsw>,+,1}<nuw><%loop> | ||||
%buf.gep = getelementptr inbounds i32, i32* %buf, i32 %idx.inc | |||||
%val = load i32, i32* %buf.gep | |||||
%condition = icmp eq i32 %counter, 1 | %condition = icmp eq i32 %counter, 1 | ||||
%counter.inc = add i32 %counter, 1 | %counter.inc = add i32 %counter, 1 | ||||
br i1 %condition, label %exit, label %loop | br i1 %condition, label %exit, label %loop | ||||
exit: | exit: | ||||
ret void | ret void | ||||
} | } | ||||
▲ Show 20 Lines • Show All 59 Lines • Show Last 20 Lines |