forked from OSchip/llvm-project
indvars --disable-iv-rewrite: sever ties with IVUsers.
llvm-svn: 133988
This commit is contained in:
parent
3ff13579f9
commit
56b315a9cf
|
@ -21,7 +21,6 @@
|
|||
#include "llvm/Analysis/Dominators.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Assembly/Writer.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
|
@ -39,15 +38,6 @@ INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
|
|||
INITIALIZE_PASS_END(IVUsers, "iv-users",
|
||||
"Induction Variable Users", false, true)
|
||||
|
||||
// IVUsers behavior currently depends on this temporary indvars mode. The
|
||||
// option must be defined upstream from its uses.
|
||||
namespace llvm {
|
||||
bool DisableIVRewrite = false;
|
||||
}
|
||||
cl::opt<bool, true> DisableIVRewriteOpt(
|
||||
"disable-iv-rewrite", cl::Hidden, cl::location(llvm::DisableIVRewrite),
|
||||
cl::desc("Disable canonical induction variable rewriting"));
|
||||
|
||||
Pass *llvm::createIVUsersPass() {
|
||||
return new IVUsers();
|
||||
}
|
||||
|
@ -100,11 +90,6 @@ bool IVUsers::AddUsersIfInteresting(Instruction *I) {
|
|||
if (Width > 64 || (TD && !TD->isLegalInteger(Width)))
|
||||
return false;
|
||||
|
||||
// We expect Sign/Zero extension to be eliminated from the IR before analyzing
|
||||
// any downstream uses.
|
||||
if (DisableIVRewrite && (isa<SExtInst>(I) || isa<ZExtInst>(I)))
|
||||
return false;
|
||||
|
||||
if (!Processed.insert(I))
|
||||
return true; // Instruction already handled.
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "llvm/Analysis/LoopInfo.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Support/CFG.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
|
@ -72,11 +73,9 @@ STATISTIC(NumElimExt , "Number of IV sign/zero extends eliminated");
|
|||
STATISTIC(NumElimRem , "Number of IV remainder operations eliminated");
|
||||
STATISTIC(NumElimCmp , "Number of IV comparisons eliminated");
|
||||
|
||||
// DisableIVRewrite mode currently affects IVUsers, so is defined in libAnalysis
|
||||
// and referenced here.
|
||||
namespace llvm {
|
||||
extern bool DisableIVRewrite;
|
||||
}
|
||||
static cl::opt<bool> DisableIVRewrite(
|
||||
"disable-iv-rewrite", cl::Hidden,
|
||||
cl::desc("Disable canonical induction variable rewriting"));
|
||||
|
||||
namespace {
|
||||
class IndVarSimplify : public LoopPass {
|
||||
|
@ -104,7 +103,8 @@ namespace {
|
|||
AU.addRequired<ScalarEvolution>();
|
||||
AU.addRequiredID(LoopSimplifyID);
|
||||
AU.addRequiredID(LCSSAID);
|
||||
AU.addRequired<IVUsers>();
|
||||
if (!DisableIVRewrite)
|
||||
AU.addRequired<IVUsers>();
|
||||
AU.addPreserved<ScalarEvolution>();
|
||||
AU.addPreservedID(LoopSimplifyID);
|
||||
AU.addPreservedID(LCSSAID);
|
||||
|
|
Loading…
Reference in New Issue