forked from OSchip/llvm-project
Disable indvars on loops when LoopSimplify form is not available.
This fixes PR7333. llvm-svn: 106267
This commit is contained in:
parent
99ba4dac59
commit
f3aea7aecf
|
@ -467,6 +467,17 @@ void IndVarSimplify::EliminateIVRemainders() {
|
|||
}
|
||||
|
||||
bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) {
|
||||
// If LoopSimplify form is not available, stay out of trouble. Some notes:
|
||||
// - LSR currently only supports LoopSimplify-form loops. Indvars'
|
||||
// canonicalization can be a pessimization without LSR to "clean up"
|
||||
// afterwards.
|
||||
// - We depend on having a preheader; in particular,
|
||||
// Loop::getCanonicalInductionVariable only supports loops with preheaders,
|
||||
// and we're in trouble if we can't find the induction variable even when
|
||||
// we've manually inserted one.
|
||||
if (!L->isLoopSimplifyForm())
|
||||
return false;
|
||||
|
||||
IU = &getAnalysis<IVUsers>();
|
||||
LI = &getAnalysis<LoopInfo>();
|
||||
SE = &getAnalysis<ScalarEvolution>();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; RUN: opt < %s -indvars -S -disable-output
|
||||
; PR5758
|
||||
|
||||
; PR5758
|
||||
define zeroext i1 @foo() nounwind {
|
||||
entry:
|
||||
indirectbr i8* undef, [label %"202", label %"133"]
|
||||
|
@ -20,3 +20,20 @@ entry:
|
|||
"202": ; preds = %entry
|
||||
ret i1 false
|
||||
}
|
||||
|
||||
; PR7333
|
||||
define void @__atomvec_module__put_vrml_bonds() nounwind {
|
||||
bb7.preheader: ; preds = %entry
|
||||
indirectbr i8* undef, [label %bb14, label %bb16]
|
||||
|
||||
bb14: ; preds = %bb14, %bb7.preheader
|
||||
br label %bb16
|
||||
|
||||
bb16: ; preds = %bb16, %bb14, %bb7.preheader
|
||||
%S.31.0 = phi i64 [ %3, %bb16 ], [ 1, %bb7.preheader ], [ 1, %bb14 ] ; <i64> [#uses=2]
|
||||
%0 = add nsw i64 %S.31.0, -1 ; <i64> [#uses=1]
|
||||
%1 = getelementptr inbounds [3 x double]* undef, i64 0, i64 %0 ; <double*> [#uses=1]
|
||||
%2 = load double* %1, align 8 ; <double> [#uses=0]
|
||||
%3 = add nsw i64 %S.31.0, 1 ; <i64> [#uses=1]
|
||||
br label %bb16
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue