From 22ae418189aae8eb4f286a5b9def7c49d330152d Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 18 May 2010 22:39:15 +0000 Subject: [PATCH] Factor out the code for deleting a formula from an LSRUse into a helper function. llvm-svn: 104079 --- lib/Transforms/Scalar/LoopStrengthReduce.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index eaf8d945bbe..eac1a023bb6 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -942,6 +942,7 @@ public: AllFixupsOutsideLoop(true) {} bool InsertFormula(const Formula &F); + void DeleteFormula(Formula &F); void check() const; @@ -979,6 +980,12 @@ bool LSRUse::InsertFormula(const Formula &F) { return true; } +/// DeleteFormula - Remove the given formula from this use's list. +void LSRUse::DeleteFormula(Formula &F) { + std::swap(F, Formulae.back()); + Formulae.pop_back(); +} + void LSRUse::print(raw_ostream &OS) const { OS << "LSR Use: Kind="; switch (Kind) { @@ -2631,8 +2638,7 @@ void LSRInstance::FilterOutUndesirableDedicatedRegisters() { #ifndef NDEBUG Changed = true; #endif - std::swap(F, LU.Formulae.back()); - LU.Formulae.pop_back(); + LU.DeleteFormula(F); --FIdx; --NumForms; continue; @@ -2728,8 +2734,7 @@ void LSRInstance::NarrowSearchSpaceUsingHeuristics() { Formula &F = LU.Formulae[i]; if (!F.referencesReg(Best)) { DEBUG(dbgs() << " Deleting "; F.print(dbgs()); dbgs() << '\n'); - std::swap(LU.Formulae.back(), F); - LU.Formulae.pop_back(); + LU.DeleteFormula(F); --e; --i; assert(e != 0 && "Use has no formulae left! Is Regs inconsistent?");