[polly] Introduce -polly-print-* passes to replace -analyze.

The `opt -analyze` option only works with the legacy pass manager and might be removed in the future, as explained in llvm.org/PR53733. This patch introduced -polly-print-* passes that print what the pass would print with the `-analyze` option and replaces all uses of `-analyze` in the regression tests.

There are two exceptions: `CodeGen\single_loop_param_less_equal.ll` and `CodeGen\loop_with_condition_nested.ll` use `-analyze on the `-loops` pass which is not part of Polly.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D120782
This commit is contained in:
Michael Kruse 2022-03-14 08:39:25 -05:00
parent f69175b1e6
commit 5c02808131
870 changed files with 1904 additions and 1475 deletions

View File

@ -498,10 +498,10 @@ static bool shouldPinPassToLegacyPM(StringRef Pass) {
"generic-to-nvvm", "expandmemcmp",
"loop-reduce", "lower-amx-type",
"pre-amx-config", "lower-amx-intrinsics",
"polyhedral-info", "replace-with-veclib",
"jmc-instrument", "dot-regions",
"dot-regions-only", "view-regions",
"view-regions-only"};
"polyhedral-info", "print-polyhedral-info",
"replace-with-veclib", "jmc-instrument",
"dot-regions", "dot-regions-only",
"view-regions", "view-regions-only"};
for (const auto &P : PassNamePrefix)
if (Pass.startswith(P))
return true;

View File

@ -196,6 +196,9 @@ public:
void printScop(raw_ostream &OS, Scop &S) const override;
};
llvm::Pass *createIslAstInfoWrapperPassPass();
llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS);
struct IslAstPrinterPass : public PassInfoMixin<IslAstPrinterPass> {
IslAstPrinterPass(raw_ostream &OS) : OS(OS) {}
@ -206,4 +209,9 @@ struct IslAstPrinterPass : public PassInfoMixin<IslAstPrinterPass> {
};
} // namespace polly
namespace llvm {
void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &);
void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif // POLLY_ISLAST_H

View File

@ -29,6 +29,7 @@ class raw_ostream;
namespace polly {
/// Create a new DeLICM pass instance.
llvm::Pass *createDeLICMWrapperPass();
llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS);
struct DeLICMPass : llvm::PassInfoMixin<DeLICMPass> {
DeLICMPass() {}
@ -62,6 +63,7 @@ bool isConflicting(isl::union_set ExistingOccupied,
namespace llvm {
void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif /* POLLY_DELICM_H */

View File

@ -262,6 +262,9 @@ private:
std::unique_ptr<Dependences> D[Dependences::NumAnalysisLevels];
};
llvm::Pass *createDependenceInfoPass();
llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS);
/// Construct a new DependenceInfoWrapper pass.
class DependenceInfoWrapperPass : public FunctionPass {
public:
@ -301,11 +304,19 @@ private:
/// Scop to Dependence map for the current function.
ScopToDepsMapTy ScopToDepsMap;
};
llvm::Pass *createDependenceInfoWrapperPassPass();
llvm::Pass *
createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
} // namespace polly
namespace llvm {
void initializeDependenceInfoPass(llvm::PassRegistry &);
void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &);
void initializeDependenceInfoPrinterLegacyFunctionPassPass(
llvm::PassRegistry &);
} // namespace llvm
#endif

View File

@ -18,14 +18,17 @@
namespace llvm {
class PassRegistry;
class Pass;
class raw_ostream;
} // namespace llvm
namespace polly {
llvm::Pass *createFlattenSchedulePass();
llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS);
} // namespace polly
namespace llvm {
void initializeFlattenSchedulePass(llvm::PassRegistry &);
void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif /* POLLY_FLATTENSCHEDULE_H */

View File

@ -17,12 +17,11 @@
namespace llvm {
class PassRegistry;
void initializeForwardOpTreeWrapperPassPass(PassRegistry &);
} // namespace llvm
namespace polly {
llvm::Pass *createForwardOpTreeWrapperPass();
llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS);
struct ForwardOpTreePass : llvm::PassInfoMixin<ForwardOpTreePass> {
ForwardOpTreePass() {}
@ -44,4 +43,9 @@ private:
} // namespace polly
namespace llvm {
void initializeForwardOpTreeWrapperPassPass(PassRegistry &);
void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &);
} // namespace llvm
#endif // POLLY_FORWARDOPTREE_H

View File

@ -13,6 +13,10 @@
#include "llvm/IR/PassManager.h"
namespace polly {
llvm::Pass *createJSONExporterPass();
llvm::Pass *createJSONImporterPass();
llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
/// This pass exports a scop to a jscop file. The filename is generated from the
/// concatenation of the function and scop name.
struct JSONExportPass : public llvm::PassInfoMixin<JSONExportPass> {
@ -28,4 +32,10 @@ struct JSONImportPass : public llvm::PassInfoMixin<JSONExportPass> {
};
} // namespace polly
namespace llvm {
void initializeJSONExporterPass(llvm::PassRegistry &);
void initializeJSONImporterPass(llvm::PassRegistry &);
void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif /* POLLY_JSONEXPORTER_H */

View File

@ -31,19 +31,28 @@ llvm::Pass *createCodePreparationPass();
llvm::Pass *createScopInlinerPass();
llvm::Pass *createDeadCodeElimWrapperPass();
llvm::Pass *createDependenceInfoPass();
llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createDependenceInfoWrapperPassPass();
llvm::Pass *
createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
llvm::Pass *createDOTOnlyPrinterPass();
llvm::Pass *createDOTOnlyViewerPass();
llvm::Pass *createDOTPrinterPass();
llvm::Pass *createDOTViewerPass();
llvm::Pass *createJSONExporterPass();
llvm::Pass *createJSONImporterPass();
llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createPollyCanonicalizePass();
llvm::Pass *createPolyhedralInfoPass();
llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createScopDetectionWrapperPassPass();
llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createScopInfoRegionPassPass();
llvm::Pass *createScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS);
llvm::Pass *createScopInfoWrapperPassPass();
llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
llvm::Pass *createIslAstInfoWrapperPassPass();
llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createCodeGenerationPass();
#ifdef GPU_CODEGEN
llvm::Pass *createPPCGCodeGenerationPass(GPUArch Arch = GPUArch::NVPTX64,
@ -54,11 +63,16 @@ createManagedMemoryRewritePassPass(GPUArch Arch = GPUArch::NVPTX64,
GPURuntime Runtime = GPURuntime::CUDA);
#endif
llvm::Pass *createIslScheduleOptimizerWrapperPass();
llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createFlattenSchedulePass();
llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createForwardOpTreeWrapperPass();
llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createDeLICMWrapperPass();
llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createMaximalStaticExpansionPass();
llvm::Pass *createSimplifyWrapperPass(int);
llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS);
llvm::Pass *createPruneUnprofitableWrapperPass();
extern char &CodePreparationID;
@ -77,56 +91,90 @@ struct PollyForcePassLinking {
polly::createCodePreparationPass();
polly::createDeadCodeElimWrapperPass();
polly::createDependenceInfoPass();
polly::createDependenceInfoPrinterLegacyPass(llvm::outs());
polly::createDependenceInfoWrapperPassPass();
polly::createDependenceInfoPrinterLegacyFunctionPass(llvm::outs());
polly::createDOTOnlyPrinterPass();
polly::createDOTOnlyViewerPass();
polly::createDOTPrinterPass();
polly::createDOTViewerPass();
polly::createJSONExporterPass();
polly::createJSONImporterPass();
polly::createJSONImporterPrinterLegacyPass(llvm::outs());
polly::createScopDetectionWrapperPassPass();
polly::createScopDetectionPrinterLegacyPass(llvm::outs());
polly::createScopInfoRegionPassPass();
polly::createScopInfoPrinterLegacyRegionPass(llvm::outs());
polly::createScopInfoWrapperPassPass();
polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs());
polly::createPollyCanonicalizePass();
polly::createPolyhedralInfoPass();
polly::createPolyhedralInfoPrinterLegacyPass(llvm::outs());
polly::createIslAstInfoWrapperPassPass();
polly::createIslAstInfoPrinterLegacyPass(llvm::outs());
polly::createCodeGenerationPass();
#ifdef GPU_CODEGEN
polly::createPPCGCodeGenerationPass();
polly::createManagedMemoryRewritePassPass();
#endif
polly::createIslScheduleOptimizerWrapperPass();
polly::createIslScheduleOptimizerPrinterLegacyPass(llvm::outs());
polly::createMaximalStaticExpansionPass();
polly::createFlattenSchedulePass();
polly::createFlattenSchedulePrinterLegacyPass(llvm::errs());
polly::createForwardOpTreeWrapperPass();
polly::createForwardOpTreePrinterLegacyPass(llvm::errs());
polly::createDeLICMWrapperPass();
polly::createDeLICMPrinterLegacyPass(llvm::outs());
polly::createDumpModuleWrapperPass("", true);
polly::createDumpFunctionWrapperPass("");
polly::createSimplifyWrapperPass(0);
polly::createSimplifyPrinterLegacyPass(llvm::outs());
polly::createPruneUnprofitableWrapperPass();
}
} PollyForcePassLinking; // Force link by creating a global definition.
} // namespace
namespace llvm {
class PassRegistry;
void initializeCodePreparationPass(llvm::PassRegistry &);
void initializeScopInlinerPass(llvm::PassRegistry &);
void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &);
void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeScopInfoRegionPassPass(PassRegistry &);
void initializeScopInfoPrinterLegacyRegionPassPass(llvm::PassRegistry &);
void initializeScopInfoWrapperPassPass(PassRegistry &);
void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &);
void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &);
void initializeJSONExporterPass(llvm::PassRegistry &);
void initializeJSONImporterPass(llvm::PassRegistry &);
void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeDependenceInfoPass(llvm::PassRegistry &);
void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &);
void initializeDependenceInfoPrinterLegacyFunctionPassPass(
llvm::PassRegistry &);
void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &);
void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeCodeGenerationPass(llvm::PassRegistry &);
#ifdef GPU_CODEGEN
void initializePPCGCodeGenerationPass(llvm::PassRegistry &);
void initializeManagedMemoryRewritePassPass(llvm::PassRegistry &);
#endif
void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeMaximalStaticExpanderPass(llvm::PassRegistry &);
void initializePollyCanonicalizePass(llvm::PassRegistry &);
void initializeFlattenSchedulePass(llvm::PassRegistry &);
void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &);
void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &);
void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &);
void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &);
void initializePolyhedralInfoPass(llvm::PassRegistry &);
void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif

View File

@ -91,11 +91,14 @@ private:
ScopInfo *SI;
DependenceInfoWrapperPass *DI;
};
llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
} // end namespace polly
namespace llvm {
class PassRegistry;
void initializePolyhedralInfoPass(llvm::PassRegistry &);
void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif

View File

@ -18,6 +18,7 @@ class PassRegistry;
namespace polly {
llvm::Pass *createIslScheduleOptimizerWrapperPass();
llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
struct IslScheduleOptimizerPass
: llvm::PassInfoMixin<IslScheduleOptimizerPass> {
@ -41,6 +42,7 @@ private:
namespace llvm {
void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
}
void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif // POLLY_SCHEDULEOPTIMIZER_H

View File

@ -56,8 +56,6 @@
namespace llvm {
class AAResults;
void initializeScopDetectionWrapperPassPass(PassRegistry &);
} // namespace llvm
namespace polly {
@ -658,11 +656,18 @@ struct ScopDetectionWrapperPass : public FunctionPass {
void getAnalysisUsage(AnalysisUsage &AU) const override;
void releaseMemory() override;
bool runOnFunction(Function &F) override;
void print(raw_ostream &OS, const Module *) const override;
void print(raw_ostream &OS, const Module *M = nullptr) const override;
//@}
ScopDetection &getSD() const { return *Result; }
};
llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
} // namespace polly
namespace llvm {
void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &);
void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif // POLLY_SCOPDETECTION_H

View File

@ -35,11 +35,6 @@
#include <cstddef>
#include <forward_list>
namespace llvm {
void initializeScopInfoRegionPassPass(PassRegistry &);
void initializeScopInfoWrapperPassPass(PassRegistry &);
} // end namespace llvm
namespace polly {
using llvm::AnalysisInfoMixin;
using llvm::ArrayRef;
@ -2718,6 +2713,8 @@ public:
void getAnalysisUsage(AnalysisUsage &AU) const override;
};
llvm::Pass *createScopInfoPrinterLegacyRegionPass(raw_ostream &OS);
class ScopInfo {
public:
using RegionToScopMapTy = MapVector<Region *, std::unique_ptr<Scop>>;
@ -2822,6 +2819,15 @@ public:
void getAnalysisUsage(AnalysisUsage &AU) const override;
};
llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
} // end namespace polly
namespace llvm {
void initializeScopInfoRegionPassPass(PassRegistry &);
void initializeScopInfoPrinterLegacyRegionPassPass(PassRegistry &);
void initializeScopInfoWrapperPassPass(PassRegistry &);
void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &);
} // end namespace llvm
#endif // POLLY_SCOPINFO_H

View File

@ -50,6 +50,7 @@ llvm::SmallVector<MemoryAccess *, 32> getAccessesInOrder(ScopStmt &Stmt);
///
/// @return The Simplify pass.
llvm::Pass *createSimplifyWrapperPass(int CallNo = 0);
llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS);
struct SimplifyPass : public PassInfoMixin<SimplifyPass> {
SimplifyPass(int CallNo = 0) : CallNo(CallNo) {}
@ -76,6 +77,7 @@ private:
namespace llvm {
void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
} // namespace llvm
#endif /* POLLY_TRANSFORM_SIMPLIFY_H */

View File

@ -927,6 +927,55 @@ INITIALIZE_PASS_END(DependenceInfo, "polly-dependences",
"Polly - Calculate dependences", false, false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from DependenceAnalysis.
class DependenceInfoPrinterLegacyPass : public ScopPass {
public:
static char ID;
DependenceInfoPrinterLegacyPass() : DependenceInfoPrinterLegacyPass(outs()) {}
explicit DependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
DependenceInfo &P = getAnalysis<DependenceInfo>();
OS << "Printing analysis '" << P.getPassName() << "' for "
<< "region: '" << S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<DependenceInfo>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char DependenceInfoPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createDependenceInfoPrinterLegacyPass(raw_ostream &OS) {
return new DependenceInfoPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(DependenceInfoPrinterLegacyPass,
"polly-print-dependences", "Polly - Print dependences",
false, false);
INITIALIZE_PASS_DEPENDENCY(DependenceInfo);
INITIALIZE_PASS_END(DependenceInfoPrinterLegacyPass, "polly-print-dependences",
"Polly - Print dependences", false, false)
//===----------------------------------------------------------------------===//
const Dependences &
DependenceInfoWrapperPass::getDependences(Scop *S,
Dependences::AnalysisLevel Level) {
@ -983,3 +1032,53 @@ INITIALIZE_PASS_END(
DependenceInfoWrapperPass, "polly-function-dependences",
"Polly - Calculate dependences for all the SCoPs of a function", false,
false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from DependenceInfoWrapperPass.
class DependenceInfoPrinterLegacyFunctionPass : public FunctionPass {
public:
static char ID;
DependenceInfoPrinterLegacyFunctionPass()
: DependenceInfoPrinterLegacyFunctionPass(outs()) {}
explicit DependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS)
: FunctionPass(ID), OS(OS) {}
bool runOnFunction(Function &F) override {
DependenceInfoWrapperPass &P = getAnalysis<DependenceInfoWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for function '"
<< F.getName() << "':\n";
P.print(OS);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
FunctionPass::getAnalysisUsage(AU);
AU.addRequired<DependenceInfoWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char DependenceInfoPrinterLegacyFunctionPass::ID = 0;
} // namespace
Pass *polly::createDependenceInfoPrinterLegacyFunctionPass(raw_ostream &OS) {
return new DependenceInfoPrinterLegacyFunctionPass(OS);
}
INITIALIZE_PASS_BEGIN(
DependenceInfoPrinterLegacyFunctionPass, "polly-print-function-dependences",
"Polly - Print dependences for all the SCoPs of a function", false, false);
INITIALIZE_PASS_DEPENDENCY(DependenceInfoWrapperPass);
INITIALIZE_PASS_END(DependenceInfoPrinterLegacyFunctionPass,
"polly-print-function-dependences",
"Polly - Print dependences for all the SCoPs of a function",
false, false)

View File

@ -165,3 +165,52 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass);
INITIALIZE_PASS_END(PolyhedralInfo, "polyhedral-info",
"Polly - Interface to polyhedral analysis engine", false,
false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from PolyhedralInfo.
class PolyhedralInfoPrinterLegacyPass : public FunctionPass {
public:
static char ID;
PolyhedralInfoPrinterLegacyPass() : PolyhedralInfoPrinterLegacyPass(outs()) {}
explicit PolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS)
: FunctionPass(ID), OS(OS) {}
bool runOnFunction(Function &F) override {
PolyhedralInfo &P = getAnalysis<PolyhedralInfo>();
OS << "Printing analysis '" << P.getPassName() << "' for function '"
<< F.getName() << "':\n";
P.print(OS);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
FunctionPass::getAnalysisUsage(AU);
AU.addRequired<PolyhedralInfo>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char PolyhedralInfoPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createPolyhedralInfoPrinterLegacyPass(raw_ostream &OS) {
return new PolyhedralInfoPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(
PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
"Polly - Print interface to polyhedral analysis engine analysis", false,
false);
INITIALIZE_PASS_DEPENDENCY(PolyhedralInfo);
INITIALIZE_PASS_END(
PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
"Polly - Print interface to polyhedral analysis engine analysis", false,
false)

View File

@ -2043,3 +2043,50 @@ INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass);
INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass);
INITIALIZE_PASS_END(ScopDetectionWrapperPass, "polly-detect",
"Polly - Detect static control parts (SCoPs)", false, false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from ScopDetectionWrapperPass.
class ScopDetectionPrinterLegacyPass : public FunctionPass {
public:
static char ID;
ScopDetectionPrinterLegacyPass() : ScopDetectionPrinterLegacyPass(outs()) {}
explicit ScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS)
: FunctionPass(ID), OS(OS) {}
bool runOnFunction(Function &F) override {
ScopDetectionWrapperPass &P = getAnalysis<ScopDetectionWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for function '"
<< F.getName() << "':\n";
P.print(OS);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
FunctionPass::getAnalysisUsage(AU);
AU.addRequired<ScopDetectionWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char ScopDetectionPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createScopDetectionPrinterLegacyPass(raw_ostream &OS) {
return new ScopDetectionPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(ScopDetectionPrinterLegacyPass, "polly-print-detect",
"Polly - Print static control parts (SCoPs)", false,
false);
INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass);
INITIALIZE_PASS_END(ScopDetectionPrinterLegacyPass, "polly-print-detect",
"Polly - Print static control parts (SCoPs)", false, false)

View File

@ -2643,6 +2643,57 @@ INITIALIZE_PASS_END(ScopInfoRegionPass, "polly-scops",
false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from ScopInfoRegionPass.
class ScopInfoPrinterLegacyRegionPass : public RegionPass {
public:
static char ID;
ScopInfoPrinterLegacyRegionPass() : ScopInfoPrinterLegacyRegionPass(outs()) {}
explicit ScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS)
: RegionPass(ID), OS(OS) {}
bool runOnRegion(Region *R, RGPassManager &RGM) override {
ScopInfoRegionPass &P = getAnalysis<ScopInfoRegionPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< R->getNameStr() << "' in function '"
<< R->getEntry()->getParent()->getName() << "':\n";
P.print(OS);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
RegionPass::getAnalysisUsage(AU);
AU.addRequired<ScopInfoRegionPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char ScopInfoPrinterLegacyRegionPass::ID = 0;
} // namespace
Pass *polly::createScopInfoPrinterLegacyRegionPass(raw_ostream &OS) {
return new ScopInfoPrinterLegacyRegionPass(OS);
}
INITIALIZE_PASS_BEGIN(ScopInfoPrinterLegacyRegionPass, "polly-print-scops",
"Polly - Print polyhedral description of Scops", false,
false);
INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass);
INITIALIZE_PASS_END(ScopInfoPrinterLegacyRegionPass, "polly-print-scops",
"Polly - Print polyhedral description of Scops", false,
false)
//===----------------------------------------------------------------------===//
ScopInfo::ScopInfo(const DataLayout &DL, ScopDetection &SD, ScalarEvolution &SE,
LoopInfo &LI, AliasAnalysis &AA, DominatorTree &DT,
AssumptionCache &AC, OptimizationRemarkEmitter &ORE)
@ -2773,3 +2824,53 @@ INITIALIZE_PASS_END(
ScopInfoWrapperPass, "polly-function-scops",
"Polly - Create polyhedral description of all Scops of a function", false,
false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from ScopInfoWrapperPass.
class ScopInfoPrinterLegacyFunctionPass : public FunctionPass {
public:
static char ID;
ScopInfoPrinterLegacyFunctionPass()
: ScopInfoPrinterLegacyFunctionPass(outs()) {}
explicit ScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS)
: FunctionPass(ID), OS(OS) {}
bool runOnFunction(Function &F) override {
ScopInfoWrapperPass &P = getAnalysis<ScopInfoWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for function '"
<< F.getName() << "':\n";
P.print(OS);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
FunctionPass::getAnalysisUsage(AU);
AU.addRequired<ScopInfoWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char ScopInfoPrinterLegacyFunctionPass::ID = 0;
} // namespace
Pass *polly::createScopInfoPrinterLegacyFunctionPass(raw_ostream &OS) {
return new ScopInfoPrinterLegacyFunctionPass(OS);
}
INITIALIZE_PASS_BEGIN(
ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops",
"Polly - Print polyhedral description of all Scops of a function", false,
false);
INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass);
INITIALIZE_PASS_END(
ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops",
"Polly - Print polyhedral description of all Scops of a function", false,
false)

View File

@ -823,3 +823,49 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass);
INITIALIZE_PASS_DEPENDENCY(DependenceInfo);
INITIALIZE_PASS_END(IslAstInfoWrapperPass, "polly-ast",
"Polly - Generate an AST from the SCoP (isl)", false, false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from IslAstInfoWrapperPass.
class IslAstInfoPrinterLegacyPass : public ScopPass {
public:
static char ID;
IslAstInfoPrinterLegacyPass() : IslAstInfoPrinterLegacyPass(outs()) {}
explicit IslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
IslAstInfoWrapperPass &P = getAnalysis<IslAstInfoWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<IslAstInfoWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char IslAstInfoPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createIslAstInfoPrinterLegacyPass(raw_ostream &OS) {
return new IslAstInfoPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(IslAstInfoPrinterLegacyPass, "polly-print-ast",
"Polly - Print the AST from a SCoP (isl)", false, false);
INITIALIZE_PASS_DEPENDENCY(IslAstInfoWrapperPass);
INITIALIZE_PASS_END(IslAstInfoPrinterLegacyPass, "polly-print-ast",
"Polly - Print the AST from a SCoP (isl)", false, false)

View File

@ -833,3 +833,49 @@ INITIALIZE_PASS_END(JSONImporter, "polly-import-jscop",
"Polly - Import Scops from JSON"
" (Reads a .jscop file for each Scop)",
false, false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from JSONImporter.
class JSONImporterPrinterLegacyPass : public ScopPass {
public:
static char ID;
JSONImporterPrinterLegacyPass() : JSONImporterPrinterLegacyPass(outs()){};
explicit JSONImporterPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
JSONImporter &P = getAnalysis<JSONImporter>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<JSONImporter>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char JSONImporterPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS) {
return new JSONImporterPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(JSONImporterPrinterLegacyPass, "polly-print-import-jscop",
"Polly - Print Scop import result", false, false)
INITIALIZE_PASS_DEPENDENCY(JSONImporter)
INITIALIZE_PASS_END(JSONImporterPrinterLegacyPass, "polly-print-import-jscop",
"Polly - Print Scop import result", false, false)

View File

@ -257,23 +257,36 @@ void initializePollyPasses(llvm::PassRegistry &Registry) {
initializeCodePreparationPass(Registry);
initializeDeadCodeElimWrapperPassPass(Registry);
initializeDependenceInfoPass(Registry);
initializeDependenceInfoPrinterLegacyPassPass(Registry);
initializeDependenceInfoWrapperPassPass(Registry);
initializeDependenceInfoPrinterLegacyFunctionPassPass(Registry);
initializeJSONExporterPass(Registry);
initializeJSONImporterPass(Registry);
initializeJSONImporterPrinterLegacyPassPass(Registry);
initializeMaximalStaticExpanderPass(Registry);
initializeIslAstInfoWrapperPassPass(Registry);
initializeIslAstInfoPrinterLegacyPassPass(Registry);
initializeIslScheduleOptimizerWrapperPassPass(Registry);
initializeIslScheduleOptimizerPrinterLegacyPassPass(Registry);
initializePollyCanonicalizePass(Registry);
initializePolyhedralInfoPass(Registry);
initializePolyhedralInfoPrinterLegacyPassPass(Registry);
initializeScopDetectionWrapperPassPass(Registry);
initializeScopDetectionPrinterLegacyPassPass(Registry);
initializeScopInlinerPass(Registry);
initializeScopInfoRegionPassPass(Registry);
initializeScopInfoPrinterLegacyRegionPassPass(Registry);
initializeScopInfoWrapperPassPass(Registry);
initializeScopInfoPrinterLegacyFunctionPassPass(Registry);
initializeCodegenCleanupPass(Registry);
initializeFlattenSchedulePass(Registry);
initializeFlattenSchedulePrinterLegacyPassPass(Registry);
initializeForwardOpTreeWrapperPassPass(Registry);
initializeForwardOpTreePrinterLegacyPassPass(Registry);
initializeDeLICMWrapperPassPass(Registry);
initializeDeLICMPrinterLegacyPassPass(Registry);
initializeSimplifyWrapperPassPass(Registry);
initializeSimplifyPrinterLegacyPassPass(Registry);
initializeDumpModuleWrapperPassPass(Registry);
initializePruneUnprofitableWrapperPassPass(Registry);
}

View File

@ -1457,10 +1457,46 @@ public:
};
char DeLICMWrapperPass::ID;
/// Print result from DeLICMWrapperPass.
class DeLICMPrinterLegacyPass : public ScopPass {
public:
static char ID;
DeLICMPrinterLegacyPass() : DeLICMPrinterLegacyPass(outs()){};
explicit DeLICMPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
DeLICMWrapperPass &P = getAnalysis<DeLICMWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<DeLICMWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char DeLICMPrinterLegacyPass::ID = 0;
} // anonymous namespace
Pass *polly::createDeLICMWrapperPass() { return new DeLICMWrapperPass(); }
llvm::Pass *polly::createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS) {
return new DeLICMPrinterLegacyPass(OS);
}
llvm::PreservedAnalyses polly::DeLICMPass::run(Scop &S,
ScopAnalysisManager &SAM,
ScopStandardAnalysisResults &SAR,
@ -1495,3 +1531,9 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
INITIALIZE_PASS_END(DeLICMWrapperPass, "polly-delicm", "Polly - DeLICM/DePRE",
false, false)
INITIALIZE_PASS_BEGIN(DeLICMPrinterLegacyPass, "polly-print-delicm",
"Polly - Print DeLICM/DePRE", false, false)
INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
INITIALIZE_PASS_END(DeLICMPrinterLegacyPass, "polly-print-delicm",
"Polly - Print DeLICM/DePRE", false, false)

View File

@ -96,11 +96,56 @@ public:
};
char FlattenSchedule::ID;
/// Print result from FlattenSchedule.
class FlattenSchedulePrinterLegacyPass : public ScopPass {
public:
static char ID;
FlattenSchedulePrinterLegacyPass()
: FlattenSchedulePrinterLegacyPass(outs()){};
explicit FlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
FlattenSchedule &P = getAnalysis<FlattenSchedule>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<FlattenSchedule>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char FlattenSchedulePrinterLegacyPass::ID = 0;
} // anonymous namespace
Pass *polly::createFlattenSchedulePass() { return new FlattenSchedule(); }
Pass *polly::createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS) {
return new FlattenSchedulePrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(FlattenSchedule, "polly-flatten-schedule",
"Polly - Flatten schedule", false, false)
INITIALIZE_PASS_END(FlattenSchedule, "polly-flatten-schedule",
"Polly - Flatten schedule", false, false)
INITIALIZE_PASS_BEGIN(FlattenSchedulePrinterLegacyPass,
"polly-print-flatten-schedule",
"Polly - Print flattened schedule", false, false)
INITIALIZE_PASS_DEPENDENCY(FlattenSchedule)
INITIALIZE_PASS_END(FlattenSchedulePrinterLegacyPass,
"polly-print-flatten-schedule",
"Polly - Print flattened schedule", false, false)

View File

@ -1143,12 +1143,48 @@ public:
}; // class ForwardOpTree
char ForwardOpTreeWrapperPass::ID;
/// Print result from ForwardOpTreeWrapperPass.
class ForwardOpTreePrinterLegacyPass : public ScopPass {
public:
static char ID;
ForwardOpTreePrinterLegacyPass() : ForwardOpTreePrinterLegacyPass(outs()){};
explicit ForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
ForwardOpTreeWrapperPass &P = getAnalysis<ForwardOpTreeWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<ForwardOpTreeWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char ForwardOpTreePrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createForwardOpTreeWrapperPass() {
return new ForwardOpTreeWrapperPass();
}
Pass *polly::createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS) {
return new ForwardOpTreePrinterLegacyPass(OS);
}
llvm::PreservedAnalyses ForwardOpTreePass::run(Scop &S,
ScopAnalysisManager &SAM,
ScopStandardAnalysisResults &SAR,
@ -1167,3 +1203,9 @@ INITIALIZE_PASS_BEGIN(ForwardOpTreeWrapperPass, "polly-optree",
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
INITIALIZE_PASS_END(ForwardOpTreeWrapperPass, "polly-optree",
"Polly - Forward operand tree", false, false)
INITIALIZE_PASS_BEGIN(ForwardOpTreePrinterLegacyPass, "polly-print-optree",
"Polly - Print forward operand tree result", false, false)
INITIALIZE_PASS_DEPENDENCY(ForwardOpTreeWrapperPass)
INITIALIZE_PASS_END(ForwardOpTreePrinterLegacyPass, "polly-print-optree",
"Polly - Print forward operand tree result", false, false)

View File

@ -1008,3 +1008,53 @@ IslScheduleOptimizerPrinterPass::run(Scop &S, ScopAnalysisManager &SAM,
SPMUpdater &U) {
return runIslScheduleOptimizerUsingNPM(S, SAM, SAR, U, &OS);
}
//===----------------------------------------------------------------------===//
namespace {
/// Print result from IslScheduleOptimizerWrapperPass.
class IslScheduleOptimizerPrinterLegacyPass : public ScopPass {
public:
static char ID;
IslScheduleOptimizerPrinterLegacyPass()
: IslScheduleOptimizerPrinterLegacyPass(outs()) {}
explicit IslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
IslScheduleOptimizerWrapperPass &P =
getAnalysis<IslScheduleOptimizerWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<IslScheduleOptimizerWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char IslScheduleOptimizerPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createIslScheduleOptimizerPrinterLegacyPass(raw_ostream &OS) {
return new IslScheduleOptimizerPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(IslScheduleOptimizerPrinterLegacyPass,
"polly-print-opt-isl",
"Polly - Print optimizer schedule of SCoP", false, false);
INITIALIZE_PASS_DEPENDENCY(IslScheduleOptimizerWrapperPass)
INITIALIZE_PASS_END(IslScheduleOptimizerPrinterLegacyPass,
"polly-print-opt-isl",
"Polly - Print optimizer schedule of SCoP", false, false)

View File

@ -850,3 +850,49 @@ INITIALIZE_PASS_BEGIN(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
INITIALIZE_PASS_END(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
false, false)
//===----------------------------------------------------------------------===//
namespace {
/// Print result from SimplifyWrapperPass.
class SimplifyPrinterLegacyPass : public ScopPass {
public:
static char ID;
SimplifyPrinterLegacyPass() : SimplifyPrinterLegacyPass(outs()) {}
explicit SimplifyPrinterLegacyPass(llvm::raw_ostream &OS)
: ScopPass(ID), OS(OS) {}
bool runOnScop(Scop &S) override {
SimplifyWrapperPass &P = getAnalysis<SimplifyWrapperPass>();
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
<< S.getRegion().getNameStr() << "' in function '"
<< S.getFunction().getName() << "':\n";
P.printScop(OS, S);
return false;
}
void getAnalysisUsage(AnalysisUsage &AU) const override {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<SimplifyWrapperPass>();
AU.setPreservesAll();
}
private:
llvm::raw_ostream &OS;
};
char SimplifyPrinterLegacyPass::ID = 0;
} // namespace
Pass *polly::createSimplifyPrinterLegacyPass(raw_ostream &OS) {
return new SimplifyPrinterLegacyPass(OS);
}
INITIALIZE_PASS_BEGIN(SimplifyPrinterLegacyPass, "polly-print-simplify",
"Polly - Print Simplify actions", false, false)
INITIALIZE_PASS_DEPENDENCY(SimplifyWrapperPass)
INITIALIZE_PASS_END(SimplifyPrinterLegacyPass, "polly-print-simplify",
"Polly - Print Simplify actions", false, false)

View File

@ -1,5 +1,5 @@
; RUN: opt %loadPolly -polly-codegen < %s
; RUN: opt %loadPolly -polly-detect -analyze < %s | not FileCheck %s
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
; RUN: opt %loadPolly -polly-print-detect -disable-output < %s | not FileCheck %s
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s
; RUN: opt %loadPolly -polly-ast -disable-output < %s
;int bar1();
;int bar2();

View File

@ -1,4 +1,4 @@
; RUN: not --crash opt %loadPolly -polly-import-jscop -analyze 2>&1 < %s | FileCheck %s
; RUN: not --crash opt %loadPolly -polly-import-jscop -disable-output 2>&1 < %s | FileCheck %s
;
; Check that we do not allow to access elements not accessed before because the
; alignment information would become invalid.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-scops -analyze -polly-import-jscop -polly-import-jscop-postfix=transformed < %s 2>&1 | FileCheck %s
; RUN: opt %loadPolly -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN
;
; for (i = 0; i < _PB_NI; i++)

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-scops -analyze -polly-import-jscop -polly-import-jscop-postfix=transformed < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
;
; #define Ni 1056

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-import-jscop -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-print-import-jscop -disable-output < %s | FileCheck %s
;
; Check that we allow the new access functions even though they access
; different locations than the original ones (but the alignment is the

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-import-jscop -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-print-import-jscop -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-import-jscop -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
define void @map_scalar_access(double* noalias nonnull %A) {

View File

@ -1,4 +1,4 @@
;RUN: opt %loadPolly -polly-import-jscop -analyze -polly-import-jscop-postfix=transformed < %s | FileCheck %s
;RUN: opt %loadPolly -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s
;RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -polly-vectorizer=polly -S < %s | FileCheck %s --check-prefix=JSCOPVEC
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; This code has failed the scev based code generation as the scev in the scop

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; AST: #pragma simd

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; The interesting part of this test case is the instruction:

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S < %s | FileCheck %s -check-prefix=IR
; Make sure we correctly forward the reference to 'A' to the OpenMP subfunction.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-codegen -S < %s | FileCheck %s -check-prefix=IR
;
; float A[100];

View File

@ -1,5 +1,5 @@
; RUN: opt %loadPolly -polly-import-jscop \
; RUN: -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-import-jscop \
; RUN: -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-import-jscop \
; RUN: -polly-codegen -S < %s \

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR

View File

@ -1,7 +1,7 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST-STRIDE4
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST-STRIDE4
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-codegen -S < %s | FileCheck %s -check-prefix=IR-STRIDE4
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -polly-omp-backend=LLVM -polly-scheduling=static -polly-scheduling-chunksize=43 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC-CHUNKED

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; #define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
; This test case verifies that we create correct code even if two OpenMP loops

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-process-unprofitable -analyze -polly-codegen < %s
; RUN: opt %loadPolly -polly-process-unprofitable -polly-codegen -disable-output < %s
;
; CHECK: store i32 %tmp14_p_scalar_, i32* %tmp14.s2a
; CHECK: %tmp14.final_reload = load i32, i32* %tmp14.s2a

View File

@ -1,4 +1,4 @@
;RUN: opt %loadPolly -polly-prepare -polly-ast -analyze < %s | FileCheck %s
;RUN: opt %loadPolly -polly-prepare -polly-print-ast -disable-output < %s | FileCheck %s
;#include <string.h>
;int A[1];

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-codegen -analyze < %s
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
;
; This caused dominance problems at some point as we do bail out during
; code generation. Just verify it runs through.

View File

@ -1,8 +1,5 @@
; RUN: opt %loadPolly -analyze -polly-ast -polly-vectorizer=polly < %s | \
; RUN: FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-codegen -polly-vectorizer=polly -S < %s | \
; RUN: FileCheck %s
; RUN: opt %loadPolly -polly-vectorizer=polly -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
; RUN: opt %loadPolly -polly-vectorizer=polly -polly-codegen -S < %s | FileCheck %s
;
; void foo(float *A) {
; for (long i = 0; i < 16; i++) {

View File

@ -1,7 +1,5 @@
; RUN: opt %loadPolly \
; RUN: -polly-scops -analyze < %s | FileCheck %s
; RUN: opt %loadPolly \
; RUN: -S -polly-codegen < %s | FileCheck %s --check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
;
; CHECK: [N] -> { Stmt_bb11[i0, i1] : i0 < N and i1 >= 0 and 3i1 <= -3 + i0 };
; CODEGEN: polly

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly < %s -analyze -polly-scops -polly-process-unprofitable -polly-invariant-load-hoisting | FileCheck %s -check-prefix=SCOPS
; RUN: opt %loadPolly -polly-process-unprofitable -polly-invariant-load-hoisting -polly-print-scops -disable-output < %s | FileCheck %s -check-prefix=SCOPS
; RUN: opt %loadPolly -S < %s -polly-codegen -polly-process-unprofitable -polly-invariant-load-hoisting | FileCheck %s -check-prefix=CODEGEN
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -analyze -polly-scops -polly-invariant-load-hoisting=true %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s
;
; The offset of the %tmp1 load wrt. to %buff (62 bytes) is not divisible

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -analyze -polly-scops -polly-invariant-load-hoisting=true < %s | FileCheck %s
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true --polly-overflow-tracking=always < %s | FileCheck %s --check-prefix=IRA
;

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -analyze < %s
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s
;
; Check that this does not crash as the invariant load is not executed (thus
; not preloaded) but still referenced by one of the parameters.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-scops -polly-invariant-load-hoisting=true -analyze < %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s
;
; SCOP: Assumed Context:

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-detect -polly-codegen -polly-invariant-load-hoisting=true -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-detect -polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s
;
; This crashed at some point as the pointer returned by the call
; to @__errno_location is invariant and defined in the SCoP but not

View File

@ -1,6 +1,4 @@
; RUN: opt %loadPolly -S -polly-scops -analyze \
; RUN: -polly-invariant-load-hoisting=true %s \
; RUN: | FileCheck %s -check-prefix=SCOPS
; RUN: opt %loadPolly -S -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -check-prefix=SCOPS
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s
;
; Check we generate valid code.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
;#include <string.h>
;#define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
; Verify that we actually detect this loop as the innermost loop even though
; there is a conditional inside.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
;#include <string.h>
;#define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-codegen -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-scops -analyze < %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=SCOP
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
; The IR has two ScopArrayInfo for the value %next.0. This used to produce two

View File

@ -1,7 +1,5 @@
; RUN: opt %loadPolly -analyze -polly-scops \
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
; RUN: opt %loadPolly -S -polly-codegen -polly-overflow-tracking=never \
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-overflow-tracking=never -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
;
; As (p + q) can overflow we have to check that we load from
; I[p + q] only if it does not.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
;
; Check that we guard the divisions because we moved them and thereby increased

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -analyze -polly-ast < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -S -polly-codegen < %s | FileCheck %s
;
; void jd(int *A, int c) {

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
; void f(int a[], int N, float *P) {

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
;

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-ast -analyze -S < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-print-ast -disable-output -S < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128"

View File

@ -1,5 +1,4 @@
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze \
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
; RUN: opt %loadPolly -basic-aa -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s --allow-empty
;#include <string.h>
;#include <stdio.h>

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
;
; CHECK: pragma simd reduction
;

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-codegen -verify-dom-info -analyze < %s
; RUN: opt %loadPolly -polly-codegen -verify-dom-info -disable-output < %s
; Verify that the DominatorTree is preserved correctly for the inserted
; %polly.stmt.exit.exit block, which serves as new exit block for the generated

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
; TODO: FIXME: Simplify the context.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#include <string.h>
;#define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -polly-allow-nonaffine -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -polly-allow-nonaffine -disable-output < %s | FileCheck %s
;#include <stdio.h>
;#include <stdlib.h>

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#define N 20
;#include "limits.h"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -S -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; XFAIL: *
;define N 20

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen < %s
;#define N 20

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -S -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; XFAIL: *
;#define N 20

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#define N 20
;#include "limits.h"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#include <string.h>
;#define N 1024

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#define N 20
;#include "limits.h"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#include "limits.h"
;#define N 20

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
;#define N 20
;

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3]

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
; RUN: opt %loadPolly -polly-codegen -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s -check-prefix=SCALAR
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=SCALAR --allow-empty
;#define N 20
;

View File

@ -1,5 +1,5 @@
; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -verify-region-info -analyze < %s
; RUN: opt %loadPolly -polly-print-detect -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-codegen -verify-region-info -disable-output < %s
;
; This is a scop directly precedented by a region, i.e. the scop's entry is the
; region's exit block. This test is to ensure that the RegionInfo is correctly

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
; XFAIL: *
;int bar1();

View File

@ -1,5 +1,5 @@
; RUN: opt %loadPolly -polly-ast -analyze -polly-ignore-aliasing < %s | FileCheck %s -check-prefix=SCALAR
; RUN: opt %loadPolly -polly-print-ast -polly-ignore-aliasing -disable-output < %s | FileCheck %s -check-prefix=SCALAR
; RUN: opt %loadPolly -polly-codegen -polly-ignore-aliasing -disable-output < %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,7 +1,7 @@
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-scops -analyze \
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-codegen -analyze \
; RUN: -polly-invariant-load-hoisting=true < %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops \
; RUN: -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-codegen \
; RUN: -polly-invariant-load-hoisting=true -disable-output < %s
; The loop for.body is a scop with invariant load hoisting, but does not
; terminate predictably for ScalarEvolution. The scalar %1 therefore is not

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-codegen -analyze < %s
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
;
;
; void f(int *A) {

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-print-delicm -disable-output < %s | FileCheck %s
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-delicm -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s -check-prefix=REMARKS
;
; ForwardOptree changes the SCoP and may already map some accesses.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
;
; The domain of bb14 contradicts the SCoP's assumptions. This leads to
; 'anything goes' inside the statement since it is never executed,

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
; When %b is 0, %for.body13 is an infite loop. In this case the loaded
; value %1 is not used anywhere.

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-delicm -analyze < %s | FileCheck -match-full-lines %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-delicm>)" -disable-output < %s | FileCheck -match-full-lines %s
;
; Check that PHI mapping works even in presence of a memset whose'

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
;
; void func(double *A) {
; for (int j = 0; j < 2; j += 1) { /* outer */

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
;
; void func(double *A) {
; for (int j = 0; j < 2; j += 1) { /* outer */

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-delicm -disable-output < %s | FileCheck %s
;
; void func(double *A) {
; for (int j = 0; j < 2; j += 1) { /* outer */

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
;
; void func(double *A) {
; fsomeval = 21.0 + 21.0;

View File

@ -1,4 +1,4 @@
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
;
; void func(double *A) {
; for (int j = 0; j < 2; j += 1) { /* outer */

Some files were not shown because too many files have changed in this diff Show More