diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h
index 6ccb37d..6b17eb2 100644
--- a/include/llvm/ADT/StringRef.h
+++ b/include/llvm/ADT/StringRef.h
@@ -15,15 +15,9 @@
 #include <cstring>
 #include <string>
 
-namespace std {
- template<typename _Tp>
- class allocator;
-
- template<typename _Tp, typename _Alloc>
- class vector;
-}
-
 namespace llvm {
+  template<typename T>
+  class SmallVectorImpl;
 
   /// StringRef - Represent a constant reference to a string, i.e. a character
   /// array and a length, which need not be null terminated.
@@ -337,8 +331,8 @@
     /// \param Separator - The string to split on.
     /// \param MaxSplit - The maximum number of times the string is split.
     /// \parm KeepEmpty - True if empty substring should be added.
-    void split(std::vector<StringRef, std::allocator<StringRef> > &A,
-               StringRef Separator, unsigned MaxSplit = -1,
+    void split(SmallVectorImpl<StringRef> &A,
+               StringRef Separator, int MaxSplit = -1,
                bool KeepEmpty = true) const;
 
     /// rsplit - Split into two substrings around the last occurence of a
diff --git a/lib/Support/StringExtras.cpp b/lib/Support/StringExtras.cpp
index 05ba34b..687394a 100644
--- a/lib/Support/StringExtras.cpp
+++ b/lib/Support/StringExtras.cpp
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/ADT/SmallVector.h"
 #include <cstring>
 using namespace llvm;
 
@@ -57,12 +58,12 @@
   }
 }
 
-void llvm::StringRef::split(std::vector<StringRef> &A,
-                            StringRef Separators, unsigned MaxSplit,
+void llvm::StringRef::split(SmallVectorImpl<StringRef> &A,
+                            StringRef Separators, int MaxSplit,
                             bool KeepEmpty) const {
   StringRef rest = *this;
 
-  for (unsigned splits = 0;
+  for (int splits = 0;
        rest.size() != 0 && (MaxSplit < 0 || splits < MaxSplit);
        ++splits) {
     std::pair<llvm::StringRef, llvm::StringRef> p = rest.split(Separators);
diff --git a/unittests/ADT/StringRefTest.cpp b/unittests/ADT/StringRefTest.cpp
index 3c0cc58..ea1d26c 100644
--- a/unittests/ADT/StringRefTest.cpp
+++ b/unittests/ADT/StringRefTest.cpp
@@ -9,6 +9,7 @@
 
 #include "gtest/gtest.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/raw_ostream.h"
 using namespace llvm;
 
@@ -111,8 +112,8 @@
 }
 
 TEST(StringRefTest, Split2) {
-  std::vector<StringRef> parts;
-  std::vector<StringRef> expected;
+  SmallVector<StringRef, 5> parts;
+  SmallVector<StringRef, 5> expected;
 
   expected.push_back("ab"); expected.push_back("c");
   StringRef(",ab,,c,").split(parts, ",", -1, false);
