https://bugs.llvm.org/show_bug.cgi?id=43235

diff --git a/llvm/include/llvm/Support/raw_ostream.h b/llvm/include/llvm/Support/raw_ostream.h
index 705f1790b1d..a0314b2c46a 100644
--- a/include/llvm/Support/raw_ostream.h
+++ b/include/llvm/Support/raw_ostream.h
@@ -507,9 +507,7 @@ class raw_string_ostream : public raw_ostream {
   /// See raw_ostream::write_impl.
   void write_impl(const char *Ptr, size_t Size) override;
 
-  /// Return the current position within the stream, not counting the bytes
-  /// currently in the buffer.
-  uint64_t current_pos() const override { return OS.size(); }
+  uint64_t current_pos() const override;
 
 public:
   explicit raw_string_ostream(std::string &O) : OS(O) {}
diff --git a/llvm/lib/Support/raw_ostream.cpp b/llvm/lib/Support/raw_ostream.cpp
index 4bb315f824a..742e2aced39 100644
--- a/lib/Support/raw_ostream.cpp
+++ b/lib/Support/raw_ostream.cpp
@@ -895,6 +895,10 @@ raw_ostream &llvm::nulls() {
 //  raw_string_ostream
 //===----------------------------------------------------------------------===//
 
+/// Return the current position within the stream, not counting the bytes
+/// currently in the buffer.
+uint64_t raw_string_ostream::current_pos() const { return OS.size(); }
+
 raw_string_ostream::~raw_string_ostream() {
   flush();
 }
