From 2bcfcc1c653f1ecd1df7e3b52746c1b2d908fdf8 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sat, 28 Feb 2015 20:14:27 +0000 Subject: [PATCH] LiveRange: Replace a creative vector erase loop with std::remove_if. I didn't see this so far because it scans backwards, but that doesn't make it any less quadratic. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230863 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/LiveInterval.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/CodeGen/LiveInterval.cpp b/lib/CodeGen/LiveInterval.cpp index fd7516dfd47..d60b0b1a504 100644 --- a/lib/CodeGen/LiveInterval.cpp +++ b/lib/CodeGen/LiveInterval.cpp @@ -567,13 +567,9 @@ void LiveRange::removeSegment(SlotIndex Start, SlotIndex End, /// Also remove the value# from value# list. void LiveRange::removeValNo(VNInfo *ValNo) { if (empty()) return; - iterator I = end(); - iterator E = begin(); - do { - --I; - if (I->valno == ValNo) - segments.erase(I); - } while (I != E); + segments.erase(std::remove_if(begin(), end(), [ValNo](const Segment &S) { + return S.valno == ValNo; + }), end()); // Now that ValNo is dead, remove it. markValNoForDeletion(ValNo); }