Skip to content

Commit 9aed79c

Browse files
committed
invalidate MachineFunctionAnalysis
1 parent 1a3577e commit 9aed79c

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "llvm/CodeGen/JMCInstrumenter.h"
3838
#include "llvm/CodeGen/LowerEmuTLS.h"
3939
#include "llvm/CodeGen/MIRPrinter.h"
40+
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
4041
#include "llvm/CodeGen/MachineModuleInfo.h"
4142
#include "llvm/CodeGen/MachinePassManager.h"
4243
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
@@ -199,9 +200,13 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
199200
AddMachinePass(ModulePassManager &MPM, const DerivedT &PB)
200201
: MPM(MPM), PB(PB) {}
201202
~AddMachinePass() {
202-
if (!MFPM.isEmpty())
203-
MPM.addPass(createModuleToFunctionPassAdaptor(
204-
createFunctionToMachineFunctionPassAdaptor(std::move(MFPM))));
203+
if (!MFPM.isEmpty()) {
204+
FunctionPassManager FPM;
205+
FPM.addPass(
206+
createFunctionToMachineFunctionPassAdaptor(std::move(MFPM)));
207+
FPM.addPass(InvalidateAnalysisPass<MachineFunctionAnalysis>());
208+
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
209+
}
205210
}
206211

207212
template <typename PassT>
@@ -540,7 +545,6 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
540545
if (PrintMIR)
541546
addPass(PrintMIRPass(Out), /*Force=*/true);
542547

543-
// TODO: invalidate MachineFunctionAnalysis
544548
return verifyStartStop(*StartStopInfo);
545549
}
546550

llvm/test/tools/llc/new-pm/start-stop.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
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

44
; NULL: function(mergeicmps,expand-memcmp,gc-lowering)
5-
; OBJ: function(mergeicmps,expand-memcmp,gc-lowering),PrintMIRPreparePass,function(machine-function(print))
5+
; OBJ: function(mergeicmps,expand-memcmp,gc-lowering),PrintMIRPreparePass,function(machine-function(print),invalidate<machine-function-info>)

0 commit comments

Comments
 (0)