Skip to content

Commit 269e279

Browse files
committed
fix required analyses
1 parent e92e25c commit 269e279

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,12 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
213213
}
214214

215215
template <typename PassT>
216-
void operator()(PassT &&Pass, StringRef Name = PassT::name()) {
216+
void operator()(PassT &&Pass, bool Force = false,
217+
StringRef Name = PassT::name()) {
217218
static_assert((is_detected<is_function_pass_t, PassT>::value ||
218219
is_detected<is_module_pass_t, PassT>::value) &&
219220
"Only module pass and function pass are supported.");
220-
if (!PB.runBeforeAdding(Name))
221+
if (!Force && !PB.runBeforeAdding(Name))
221222
return;
222223

223224
// Add Function Pass
@@ -565,9 +566,12 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
565566

566567
{
567568
AddIRPass addIRPass(MPM, derived());
568-
addIRPass(RequireAnalysisPass<MachineModuleAnalysis, Module>());
569-
addIRPass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>());
570-
addIRPass(RequireAnalysisPass<CollectorMetadataAnalysis, Module>());
569+
addIRPass(RequireAnalysisPass<MachineModuleAnalysis, Module>(),
570+
/*Force=*/true);
571+
addIRPass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>(),
572+
/*Force=*/true);
573+
addIRPass(RequireAnalysisPass<CollectorMetadataAnalysis, Module>(),
574+
/*Force=*/true);
571575
addISelPasses(addIRPass);
572576
}
573577

@@ -683,7 +687,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
683687
// Before running any passes, run the verifier to determine if the input
684688
// coming from the front-end and/or optimizer is valid.
685689
if (!Opt.DisableVerify)
686-
addPass(VerifierPass());
690+
addPass(VerifierPass(), /*Force=*/true);
687691

688692
// Run loop strength reduction before anything else.
689693
if (getOptLevel() != CodeGenOptLevel::None && !Opt.DisableLSR) {
@@ -820,7 +824,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPrepare(
820824
// All passes which modify the LLVM IR are now complete; run the verifier
821825
// to ensure that the IR is valid.
822826
if (!Opt.DisableVerify)
823-
addPass(VerifierPass());
827+
addPass(VerifierPass(), /*Force=*/true);
824828
}
825829

826830
template <typename Derived, typename TargetMachineT>

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2113,7 +2113,8 @@ void AMDGPUCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
21132113

21142114
// FIXME: Why isn't this queried as required from AMDGPUISelDAGToDAG, and why
21152115
// isn't this in addInstSelector?
2116-
addPass(RequireAnalysisPass<UniformityInfoAnalysis, Function>());
2116+
addPass(RequireAnalysisPass<UniformityInfoAnalysis, Function>(),
2117+
/*Force=*/true);
21172118
}
21182119

21192120
void AMDGPUCodeGenPassBuilder::addILPOpts(AddMachinePass &addPass) const {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; RUN: llc -mtriple=x86_64-pc-linux-gnu -enable-new-pm -print-pipeline-passes -start-before=mergeicmps -stop-after=gc-lowering -filetype=null %s | FileCheck --match-full-lines %s --check-prefix=NULL
22
; RUN: llc -mtriple=x86_64-pc-linux-gnu -enable-new-pm -print-pipeline-passes -start-before=mergeicmps -stop-after=gc-lowering -o /dev/null %s | FileCheck --match-full-lines %s --check-prefix=OBJ
33

4-
; NULL: require<MachineModuleAnalysis>,require<profile-summary>,require<collector-metadata>,function(verify,loop-mssa(loop-reduce),mergeicmps,expand-memcmp,gc-lowering,ee-instrument<post-inline>,verify)
5-
; OBJ: require<MachineModuleAnalysis>,require<profile-summary>,require<collector-metadata>,function(verify,loop-mssa(loop-reduce),mergeicmps,expand-memcmp,gc-lowering,ee-instrument<post-inline>,verify),PrintMIRPreparePass,function(machine-function(print),invalidate<machine-function-info>)
4+
; NULL: require<MachineModuleAnalysis>,require<profile-summary>,require<collector-metadata>,function(verify,mergeicmps,expand-memcmp,gc-lowering,verify)
5+
; OBJ: require<MachineModuleAnalysis>,require<profile-summary>,require<collector-metadata>,function(verify,mergeicmps,expand-memcmp,gc-lowering,verify),PrintMIRPreparePass,function(machine-function(print),invalidate<machine-function-info>)

0 commit comments

Comments
 (0)