SUMMARY
Remove MIUtilParse once https://reviews.llvm.org/D23882 is accepted.

From:
https://reviews.llvm.org/file/data/e4yr2fu3vndsceyt6xv7/PHID-FILE-pgisidny2ro3tylncbpm/D23883.diff

Index: tools/lldb-mi/CMakeLists.txt
===================================================================
--- tools/lldb-mi/CMakeLists.txt
+++ tools/lldb-mi/CMakeLists.txt
@@ -65,7 +65,6 @@
   MIDriverBase.cpp
   MIDriverMain.cpp
   MIDriverMgr.cpp
-  MIUtilParse.cpp
   MIUtilDateTimeStd.cpp
   MIUtilDebug.cpp
   MIUtilFileStd.cpp
Index: tools/lldb-mi/MIUtilParse.h
===================================================================
--- tools/lldb-mi/MIUtilParse.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//===-- MIUtilParse.h ------------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
- 
-#pragma once
- 
-// Third party headers:
-#include "../lib/Support/regex_impl.h"
-
-// In-house headers:
-#include "MIUtilString.h"
- 
-namespace MIUtilParse
-{
- 
-//++ ============================================================================
-// Details: MI common code utility class. Used to parse the output
-//          returned from lldb commands using regex.
-//--
-class CRegexParser
-{
-  public:
-    // Helper class for keeping track of regex matches.
-    class Match
-    {
-        friend CRegexParser;
-      public:
-        /* ctor */ explicit Match(size_t nmatches)
-            : m_matchStrs(nmatches), m_maxMatches(nmatches)
-        {
-        }
-        size_t
-        GetMatchCount() const
-        {
-            return m_matchStrs.size();
-        }
-        CMIUtilString
-        GetMatchAtIndex(size_t i) const
-        {
-            if (m_matchStrs.size() > i)
-                return m_matchStrs[i];
-            return CMIUtilString();
-        }
-      private:
-        CMIUtilString::VecString_t m_matchStrs;
-        const size_t m_maxMatches;
-    };
- 
-    // Methods:
-    // Compile the regular expression.
-    /* ctor */ explicit CRegexParser(const char *regexStr);
- 
-    // Free the memory used by the regular expression.
-    /* dtor */ ~CRegexParser();
- 
-    // No copies
-    CRegexParser(const CRegexParser&) = delete;
-    void operator=(CRegexParser&) = delete;
- 
-    // Return the match at the index.
-    int
-    GetMatchCount(const Match& match) const
-    {
-        if (m_isValid)
-            return match.GetMatchCount();
-        return 0;
-    }
- 
-    bool
-    IsValid() const
-    {
-        return m_isValid;
-    }
- 
-    // Match the input against the regular expression.  Return an error
-    // if the number of matches is less than minMatches.  If the default
-    // minMatches value of 0 is passed, an error will be returned if
-    // the number of matches is less than the maxMatches value used to
-    // initialize Match.
-    bool
-    Execute(const char *input, Match& match, size_t minMatches = 0);
- 
-  private:
-    llvm_regex_t m_emma;
-    const bool m_isValid;
-};
-
-}
Index: tools/lldb-mi/MIUtilParse.cpp
===================================================================
--- tools/lldb-mi/MIUtilParse.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-//===-- MIUtilParse.cpp ----------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
- 
-// Third party headers:
-#include <memory>
-
-// In-house headers:
-#include "MIUtilParse.h"
- 
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser constructor.
-// Type:    Method.
-// Args:    regexStr - Pointer to the regular expression to compile.
-// Return:  None.
-// Throws:  None.
-//--
-MIUtilParse::CRegexParser::CRegexParser(const char *regexStr)
-    : m_isValid(llvm_regcomp(&m_emma, regexStr, REG_EXTENDED) == 0)
-{
-}
- 
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser destructor.
-// Type:    Method.
-// Args:    None.
-// Return:  None.
-// Throws:  None.
-//--
-MIUtilParse::CRegexParser::~CRegexParser()
-{
-    // Free up memory held within regex.
-    if (m_isValid)
-        llvm_regfree(&m_emma);
-}
- 
-//++ ------------------------------------------------------------------------------------
-// Details: CRegexParser regex executer.
-//          Match the input against the regular expression.  Return an error
-//          if the number of matches is less than minMatches.  If the default
-//          minMatches value of 0 is passed, an error will be returned if
-//          the number of matches is less than the maxMatches value used to
-//          initialize Match.
-// Type:    Method.
-// Args:    input (R) - Pointer to UTF8 text data to be parsed.
-//          match (RW) - Reference to Match class.
-//          minMatches (R) - Minimum number of regex matches expected.
-// Return:  bool - True = minimum matches were met,
-//                 false = minimum matches were not met or regex failed.
-// Throws:  None.
-//--
-bool
-MIUtilParse::CRegexParser::Execute(const char *input, Match& match, size_t minMatches)
-{
-    if (!m_isValid)
-        return false;
- 
-    std::unique_ptr<llvm_regmatch_t[]> matches(new llvm_regmatch_t[match.m_maxMatches]); // Array of matches
-   
-    if (llvm_regexec(&m_emma, input, match.m_maxMatches, matches.get(), 0) != 0)
-        return false;
- 
-    size_t i;
-    for (i = 0; i < match.m_maxMatches && matches[i].rm_so >= 0; i++)
-    {
-        const int n = matches[i].rm_eo - matches[i].rm_so;
-        match.m_matchStrs[i].assign(input + matches[i].rm_so, n);
-    }
-    return i >= minMatches;
-}