Don't leak passes if added outside of the area determined by Started/Stopped flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187722 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer 2013-08-05 11:11:11 +00:00
parent ccdf5cc7bc
commit f8e16c6f5a
2 changed files with 4 additions and 1 deletions

View File

@ -308,7 +308,8 @@ protected:
AnalysisID addPass(AnalysisID PassID); AnalysisID addPass(AnalysisID PassID);
/// Add a pass to the PassManager if that pass is supposed to be run, as /// Add a pass to the PassManager if that pass is supposed to be run, as
/// determined by the StartAfter and StopAfter options. /// determined by the StartAfter and StopAfter options. Takes ownership of the
/// pass.
void addPass(Pass *P); void addPass(Pass *P);
/// addMachinePasses helper to create the target-selected or overriden /// addMachinePasses helper to create the target-selected or overriden

View File

@ -300,6 +300,8 @@ void TargetPassConfig::addPass(Pass *P) {
if (Started && !Stopped) if (Started && !Stopped)
PM->add(P); PM->add(P);
else
delete P;
if (StopAfter == PassID) if (StopAfter == PassID)
Stopped = true; Stopped = true;
if (StartAfter == PassID) if (StartAfter == PassID)