mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-16 08:08:01 +00:00
Fixes PR9730: indvars: An asserting value handle still pointed to this value
Modified LinearFunctionTestReplace to push the condition on the dead list instead of eagerly deleting it. This can cause unnecessary IV rewrites, which should have no effect on codegen and will not be an issue once we stop generating canonical IVs. llvm-svn: 130340
This commit is contained in:
parent
42736cb058
commit
652ca6a95a
@ -275,7 +275,7 @@ ICmpInst *IndVarSimplify::LinearFunctionTestReplace(Loop *L,
|
||||
// update the branch to use the new comparison; in the common case this
|
||||
// will make old comparison dead.
|
||||
BI->setCondition(Cond);
|
||||
RecursivelyDeleteTriviallyDeadInstructions(OrigCond);
|
||||
DeadInsts.push_back(OrigCond);
|
||||
|
||||
++NumLFTR;
|
||||
Changed = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -indvars -S | grep icmp | grep next
|
||||
; RUN: opt < %s -indvars -S | FileCheck %s
|
||||
; PR4086
|
||||
declare void @foo()
|
||||
|
||||
@ -6,13 +6,14 @@ define void @test() {
|
||||
entry:
|
||||
br label %loop_body
|
||||
|
||||
loop_body:
|
||||
%i = phi float [ %nexti, %loop_body ], [ 0.0, %entry ]
|
||||
loop_body:
|
||||
%i = phi float [ %nexti, %loop_body ], [ 0.0, %entry ]
|
||||
tail call void @foo()
|
||||
%nexti = fadd float %i, 1.0
|
||||
%less = fcmp olt float %nexti, 2.0
|
||||
; CHECK: icmp ne i32 %{{[a-zA-Z$._0-9]+}}, 2
|
||||
%less = fcmp olt float %nexti, 2.0
|
||||
br i1 %less, label %loop_body, label %done
|
||||
|
||||
done:
|
||||
done:
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user