mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +00:00
Finally re-apply r46959. This is made feasible by the combination
of r56230, r56232, and r56246. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56247 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
81b28ceab6
commit
70ff4cf1ba
@ -1981,8 +1981,8 @@ SCEVHandle ScalarEvolutionsImpl::ComputeIterationCount(const Loop *L) {
|
|||||||
|
|
||||||
// At this point, we would like to compute how many iterations of the
|
// At this point, we would like to compute how many iterations of the
|
||||||
// loop the predicate will return true for these inputs.
|
// loop the predicate will return true for these inputs.
|
||||||
if (isa<SCEVConstant>(LHS) && !isa<SCEVConstant>(RHS)) {
|
if (LHS->isLoopInvariant(L) && !RHS->isLoopInvariant(L)) {
|
||||||
// If there is a constant, force it into the RHS.
|
// If there is a loop-invariant, force it into the RHS.
|
||||||
std::swap(LHS, RHS);
|
std::swap(LHS, RHS);
|
||||||
Cond = ICmpInst::getSwappedPredicate(Cond);
|
Cond = ICmpInst::getSwappedPredicate(Cond);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop header: (0 smax %n) iterations!}
|
; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop header: (0 smax %n) iterations!}
|
||||||
; XFAIL: *
|
|
||||||
|
|
||||||
define void @foo(i32 %n) {
|
define void @foo(i32 %n) {
|
||||||
entry:
|
entry:
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
; RUN: llvm-as < %s | opt -indvars | llvm-dis > %t
|
; RUN: llvm-as < %s | opt -indvars | llvm-dis > %t
|
||||||
; RUN: not grep select %t
|
; RUN: grep select %t | count 2
|
||||||
; RUN: grep {icmp ne i32.\* %w } %t
|
; RUN: grep {icmp ne i32.\* %w } %t
|
||||||
|
|
||||||
; Indvars should be able to insert a canonical induction variable
|
; Indvars should be able to insert a canonical induction variable
|
||||||
; for the bb6 loop without using a maximum calculation (icmp, select)
|
; for the bb6 loop without using a maximum calculation (icmp, select)
|
||||||
; because it should be able to prove that the comparison is guarded
|
; because it should be able to prove that the comparison is guarded
|
||||||
; by an appropriate conditional branch.
|
; by an appropriate conditional branch. Unfortunately, indvars is
|
||||||
|
; not yet able to find the comparison for the other too loops in
|
||||||
|
; this testcase.
|
||||||
|
|
||||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||||
target triple = "i386-apple-darwin9"
|
target triple = "i386-apple-darwin9"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user