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/Dominators.h"
|
||||||
#include "llvm/Analysis/LoopPass.h"
|
#include "llvm/Analysis/LoopPass.h"
|
||||||
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
|
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
|
||||||
#include "llvm/Support/CommandLine.h"
|
|
||||||
#include "llvm/Target/TargetData.h"
|
#include "llvm/Target/TargetData.h"
|
||||||
#include "llvm/Assembly/Writer.h"
|
#include "llvm/Assembly/Writer.h"
|
||||||
#include "llvm/ADT/STLExtras.h"
|
#include "llvm/ADT/STLExtras.h"
|
||||||
|
@ -39,15 +38,6 @@ INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
|
||||||
INITIALIZE_PASS_END(IVUsers, "iv-users",
|
INITIALIZE_PASS_END(IVUsers, "iv-users",
|
||||||
"Induction Variable Users", false, true)
|
"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() {
|
Pass *llvm::createIVUsersPass() {
|
||||||
return new IVUsers();
|
return new IVUsers();
|
||||||
}
|
}
|
||||||
|
@ -100,11 +90,6 @@ bool IVUsers::AddUsersIfInteresting(Instruction *I) {
|
||||||
if (Width > 64 || (TD && !TD->isLegalInteger(Width)))
|
if (Width > 64 || (TD && !TD->isLegalInteger(Width)))
|
||||||
return false;
|
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))
|
if (!Processed.insert(I))
|
||||||
return true; // Instruction already handled.
|
return true; // Instruction already handled.
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
#include "llvm/Analysis/LoopInfo.h"
|
#include "llvm/Analysis/LoopInfo.h"
|
||||||
#include "llvm/Analysis/LoopPass.h"
|
#include "llvm/Analysis/LoopPass.h"
|
||||||
#include "llvm/Support/CFG.h"
|
#include "llvm/Support/CFG.h"
|
||||||
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include "llvm/Support/Debug.h"
|
#include "llvm/Support/Debug.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include "llvm/Transforms/Utils/Local.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(NumElimRem , "Number of IV remainder operations eliminated");
|
||||||
STATISTIC(NumElimCmp , "Number of IV comparisons eliminated");
|
STATISTIC(NumElimCmp , "Number of IV comparisons eliminated");
|
||||||
|
|
||||||
// DisableIVRewrite mode currently affects IVUsers, so is defined in libAnalysis
|
static cl::opt<bool> DisableIVRewrite(
|
||||||
// and referenced here.
|
"disable-iv-rewrite", cl::Hidden,
|
||||||
namespace llvm {
|
cl::desc("Disable canonical induction variable rewriting"));
|
||||||
extern bool DisableIVRewrite;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class IndVarSimplify : public LoopPass {
|
class IndVarSimplify : public LoopPass {
|
||||||
|
@ -104,7 +103,8 @@ namespace {
|
||||||
AU.addRequired<ScalarEvolution>();
|
AU.addRequired<ScalarEvolution>();
|
||||||
AU.addRequiredID(LoopSimplifyID);
|
AU.addRequiredID(LoopSimplifyID);
|
||||||
AU.addRequiredID(LCSSAID);
|
AU.addRequiredID(LCSSAID);
|
||||||
AU.addRequired<IVUsers>();
|
if (!DisableIVRewrite)
|
||||||
|
AU.addRequired<IVUsers>();
|
||||||
AU.addPreserved<ScalarEvolution>();
|
AU.addPreserved<ScalarEvolution>();
|
||||||
AU.addPreservedID(LoopSimplifyID);
|
AU.addPreservedID(LoopSimplifyID);
|
||||||
AU.addPreservedID(LCSSAID);
|
AU.addPreservedID(LCSSAID);
|
||||||
|
|
Loading…
Reference in New Issue