diff -Naur a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h
--- a/include/llvm/Support/raw_ostream.h	2021-05-22 19:56:44.779955686 +0200
+++ b/include/llvm/Support/raw_ostream.h	2021-05-22 20:00:49.449954752 +0200
@@ -610,9 +610,7 @@
   /// 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 -Naur a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp
--- a/lib/Support/raw_ostream.cpp	2021-05-22 19:59:05.651955148 +0200
+++ b/lib/Support/raw_ostream.cpp	2021-05-22 20:01:22.929954625 +0200
@@ -938,6 +938,10 @@
 //  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();
 }
