From 43ee36040d31c5dc2852a22cad2a30d1ee97baa7 Mon Sep 17 00:00:00 2001
From: Rafael Espindola <rafael.espindola@gmail.com>
Date: Mon, 3 Jul 2017 17:32:09 +0000
Subject: [PATCH] fix msvc build

llvm-svn: 307044
---
 lld/ELF/Writer.cpp | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 3a8af2d40211..6df49269db85 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -1147,18 +1147,19 @@ static void removeUnusedSyntheticSections() {
       continue;
 
     OutputSectionCommand *Cmd = Script->getCmd(OS);
-    BaseCommand **Empty = nullptr;
-    for (BaseCommand *&B : Cmd->Commands) {
+    std::vector<BaseCommand *>::iterator Empty = Cmd->Commands.end();
+    for (auto I = Cmd->Commands.begin(), E = Cmd->Commands.end(); I != E; ++I) {
+      BaseCommand *B = *I;
       if (auto *ISD = dyn_cast<InputSectionDescription>(B)) {
-        auto I = std::find(ISD->Sections.begin(), ISD->Sections.end(), SS);
-        if (I != ISD->Sections.end())
-          ISD->Sections.erase(I);
+        auto P = std::find(ISD->Sections.begin(), ISD->Sections.end(), SS);
+        if (P != ISD->Sections.end())
+          ISD->Sections.erase(P);
         if (ISD->Sections.empty())
-          Empty = &B;
+          Empty = I;
       }
     }
-    if (Empty)
-      Cmd->Commands.erase(std::vector<BaseCommand *>::iterator(Empty));
+    if (Empty != Cmd->Commands.end())
+      Cmd->Commands.erase(Empty);
 
     // If there are no other sections in the output section, remove it from the
     // output.