mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
[PM] Introduce a utility pass that preserves no analyses.
Use this to test that path of invalidation. This test actually shows redundant invalidation here that is really bad. I'm going to work on fixing that next, but wanted to commit the test harness now that its all working. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225257 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f6145affbf
commit
0df89054c0
@ -816,6 +816,20 @@ template <typename AnalysisT> struct NoopAnalysisInvalidationPass {
|
||||
static StringRef name() { return "No-op Analysis Invalidation Pass"; }
|
||||
};
|
||||
|
||||
/// \brief A utility pass that does nothing but preserves no analyses.
|
||||
///
|
||||
/// As a consequence fo not preserving any analyses, this pass will force all
|
||||
/// analysis passes to be re-run to produce fresh results if any are needed.
|
||||
struct InvalidateAllAnalysesPass {
|
||||
/// \brief Run this pass over some unit of IR.
|
||||
template <typename T>
|
||||
PreservedAnalyses run(T &&Arg) {
|
||||
return PreservedAnalyses::none();
|
||||
}
|
||||
|
||||
static StringRef name() { return "InvalidateAllAnalysesPass"; }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -194,6 +194,39 @@
|
||||
; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Invalidating function analysis: NoOpFunctionAnalysis
|
||||
; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running function analysis: NoOpFunctionAnalysis
|
||||
|
||||
; RUN: opt -disable-output -disable-verify -debug-pass-manager -debug-cgscc-pass-manager \
|
||||
; RUN: -passes='require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>,invalidate<all>,require<no-op-function>),require<no-op-cgscc>),require<no-op-module>' %s 2>&1 \
|
||||
; RUN: | FileCheck %s --check-prefix=CHECK-INVALIDATE-ALL
|
||||
; CHECK-INVALIDATE-ALL: Starting module pass manager run.
|
||||
; CHECK-INVALIDATE-ALL: Running module pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running module analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Starting CGSCC pass manager run.
|
||||
; CHECK-INVALIDATE-ALL: Running CGSCC pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running CGSCC analysis: NoOpCGSCCAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Starting function pass manager run.
|
||||
; CHECK-INVALIDATE-ALL: Running function pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running function analysis: NoOpFunctionAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running function pass: InvalidateAllAnalysesPass
|
||||
; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses for function
|
||||
; CHECK-INVALIDATE-ALL: Invalidating function analysis: NoOpFunctionAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running function pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running function analysis: NoOpFunctionAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Finished function pass manager run.
|
||||
; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses for function
|
||||
; CHECK-INVALIDATE-ALL: Invalidating function analysis: NoOpFunctionAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses for SCC
|
||||
; CHECK-INVALIDATE-ALL: Invalidating CGSCC analysis: NoOpCGSCCAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running CGSCC pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running CGSCC analysis: NoOpCGSCCAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Finished CGSCC pass manager run.
|
||||
; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses for SCC
|
||||
; CHECK-INVALIDATE-ALL: Invalidating CGSCC analysis: NoOpCGSCCAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses for module
|
||||
; CHECK-INVALIDATE-ALL: Invalidating module analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Running module pass: No-op Analysis Requirement Pass
|
||||
; CHECK-INVALIDATE-ALL: Running module analysis: NoOpModuleAnalysis
|
||||
; CHECK-INVALIDATE-ALL: Finished module pass manager run.
|
||||
|
||||
define void @foo() {
|
||||
ret void
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ MODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis())
|
||||
#ifndef MODULE_PASS
|
||||
#define MODULE_PASS(NAME, CREATE_PASS)
|
||||
#endif
|
||||
MODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass())
|
||||
MODULE_PASS("no-op-module", NoOpModulePass())
|
||||
MODULE_PASS("print", PrintModulePass(dbgs()))
|
||||
MODULE_PASS("print-cg", LazyCallGraphPrinterPass(dbgs()))
|
||||
@ -41,6 +42,7 @@ CGSCC_ANALYSIS("no-op-cgscc", NoOpCGSCCAnalysis())
|
||||
#ifndef CGSCC_PASS
|
||||
#define CGSCC_PASS(NAME, CREATE_PASS)
|
||||
#endif
|
||||
CGSCC_PASS("invalidate<all>", InvalidateAllAnalysesPass())
|
||||
CGSCC_PASS("no-op-cgscc", NoOpCGSCCPass())
|
||||
#undef CGSCC_PASS
|
||||
|
||||
@ -53,6 +55,7 @@ FUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis())
|
||||
#ifndef FUNCTION_PASS
|
||||
#define FUNCTION_PASS(NAME, CREATE_PASS)
|
||||
#endif
|
||||
FUNCTION_PASS("invalidate<all>", InvalidateAllAnalysesPass())
|
||||
FUNCTION_PASS("no-op-function", NoOpFunctionPass())
|
||||
FUNCTION_PASS("print", PrintFunctionPass(dbgs()))
|
||||
FUNCTION_PASS("verify", VerifierPass())
|
||||
|
Loading…
x
Reference in New Issue
Block a user