1. LegacyPM: Rename SimplifyLegacyPass to SimplifyWrapperPass.
2. LegacyPM: Complete create/init functions in LinkAllPasses.h
3. NewPM: Only invalidate non-Scop passes if changed.
4. NewPM: Add to default pass pipeline.
5. NewPM: Print -analyze header for each print<polly-simplify>
#include "polly/CodeGen/PPCGCodeGeneration.h"
#include "polly/Config/config.h"
-#include "polly/Simplify.h"
#include "polly/Support/DumpModulePass.h"
#include "llvm/ADT/StringRef.h"
#include <cstdlib>
llvm::Pass *createForwardOpTreeWrapperPass();
llvm::Pass *createDeLICMWrapperPass();
llvm::Pass *createMaximalStaticExpansionPass();
+llvm::Pass *createSimplifyWrapperPass(int);
llvm::Pass *createPruneUnprofitableWrapperPass();
extern char &CodePreparationID;
polly::createForwardOpTreeWrapperPass();
polly::createDeLICMWrapperPass();
polly::createDumpModulePass("", true);
- polly::createSimplifyPass();
+ polly::createSimplifyWrapperPass(0);
polly::createPruneUnprofitableWrapperPass();
}
} PollyForcePassLinking; // Force link by creating a global definition.
void initializeFlattenSchedulePass(llvm::PassRegistry &);
void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &);
void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
+void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &);
} // namespace llvm
/// simplification itself.
///
/// @return The Simplify pass.
-llvm::Pass *createSimplifyPass(int CallNo = 0);
+llvm::Pass *createSimplifyWrapperPass(int CallNo = 0);
struct SimplifyPass : public PassInfoMixin<SimplifyPass> {
SimplifyPass(int CallNo = 0) : Imp(CallNo) {}
} // namespace polly
namespace llvm {
-void initializeSimplifyLegacyPassPass(llvm::PassRegistry &);
+void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif /* POLLY_TRANSFORM_SIMPLIFY_H */
initializeFlattenSchedulePass(Registry);
initializeForwardOpTreeWrapperPassPass(Registry);
initializeDeLICMWrapperPassPass(Registry);
- initializeSimplifyLegacyPassPass(Registry);
+ initializeSimplifyWrapperPassPass(Registry);
initializeDumpModulePass(Registry);
initializePruneUnprofitableWrapperPassPass(Registry);
}
PM.add(polly::createPolyhedralInfoPass());
if (EnableSimplify)
- PM.add(polly::createSimplifyPass(0));
+ PM.add(polly::createSimplifyWrapperPass(0));
if (EnableForwardOpTree)
PM.add(polly::createForwardOpTreeWrapperPass());
if (EnableDeLICM)
PM.add(polly::createDeLICMWrapperPass());
if (EnableSimplify)
- PM.add(polly::createSimplifyPass(1));
+ PM.add(polly::createSimplifyWrapperPass(1));
if (ImportJScop)
PM.add(polly::createJSONImporterPass());
assert(!PollyPrinter && "This option is not implemented");
assert(!PollyOnlyPrinter && "This option is not implemented");
assert(!EnablePolyhedralInfo && "This option is not implemented");
+ if (EnableSimplify)
+ SPM.addPass(SimplifyPass(0));
if (EnableForwardOpTree)
SPM.addPass(ForwardOpTreePass());
if (EnableDeLICM)
SPM.addPass(DeLICMPass());
- assert(!EnableSimplify && "This option is not implemented");
+ if (EnableSimplify)
+ SPM.addPass(SimplifyPass(1));
if (ImportJScop)
SPM.addPass(JSONImportPass());
assert(!DeadCodeElim && "This option is not implemented");
}
namespace {
-class SimplifyLegacyPass : public ScopPass {
+class SimplifyWrapperPass : public ScopPass {
public:
static char ID;
SimplifyVisitor Imp;
- explicit SimplifyLegacyPass(int CallNo = 0) : ScopPass(ID), Imp(CallNo) {}
+ explicit SimplifyWrapperPass(int CallNo = 0) : ScopPass(ID), Imp(CallNo) {}
virtual void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.addRequiredTransitive<ScopInfoRegionPass>();
virtual void releaseMemory() override { Imp.releaseMemory(); }
};
-char SimplifyLegacyPass::ID;
+char SimplifyWrapperPass::ID;
} // anonymous namespace
namespace polly {
if (!Imp.visit(S, &SAR.LI))
return llvm::PreservedAnalyses::all();
- return llvm::PreservedAnalyses::none();
+ PreservedAnalyses PA;
+ PA.preserveSet<AllAnalysesOn<Module>>();
+ PA.preserveSet<AllAnalysesOn<Function>>();
+ PA.preserveSet<AllAnalysesOn<Loop>>();
+ return PA;
}
llvm::PreservedAnalyses
SimplifyPrinterPass::run(Scop &S, ScopAnalysisManager &SAM,
ScopStandardAnalysisResults &SAR, SPMUpdater &U) {
bool Changed = Imp.visit(S, &SAR.LI);
+
+ OS << "Printing analysis 'Polly - Simplify' for region: '" << S.getName()
+ << "' in function '" << S.getFunction().getName() << "':\n";
Imp.printScop(OS, S);
if (!Changed)
return llvm::PreservedAnalyses::all();
- return llvm::PreservedAnalyses::none();
+ PreservedAnalyses PA;
+ PA.preserveSet<AllAnalysesOn<Module>>();
+ PA.preserveSet<AllAnalysesOn<Function>>();
+ PA.preserveSet<AllAnalysesOn<Loop>>();
+ return PA;
}
SmallVector<MemoryAccess *, 32> getAccessesInOrder(ScopStmt &Stmt) {
}
} // namespace polly
-Pass *polly::createSimplifyPass(int CallNo) {
- return new SimplifyLegacyPass(CallNo);
+Pass *polly::createSimplifyWrapperPass(int CallNo) {
+ return new SimplifyWrapperPass(CallNo);
}
-INITIALIZE_PASS_BEGIN(SimplifyLegacyPass, "polly-simplify", "Polly - Simplify",
+INITIALIZE_PASS_BEGIN(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
false, false)
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
-INITIALIZE_PASS_END(SimplifyLegacyPass, "polly-simplify", "Polly - Simplify",
+INITIALIZE_PASS_END(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
false, false)