Index: include/llvm/Support/MemoryBuffer.h =================================================================== --- include/llvm/Support/MemoryBuffer.h +++ include/llvm/Support/MemoryBuffer.h @@ -151,6 +151,8 @@ public: MemoryBufferRef() {} + MemoryBufferRef(MemoryBuffer& Buffer) + : Buffer(Buffer.getBuffer()), Identifier(Buffer.getBufferIdentifier()) {} MemoryBufferRef(StringRef Buffer, StringRef Identifier) : Buffer(Buffer), Identifier(Identifier) {} Index: unittests/Support/MemoryBufferTest.cpp =================================================================== --- unittests/Support/MemoryBufferTest.cpp +++ unittests/Support/MemoryBufferTest.cpp @@ -170,6 +170,15 @@ } +TEST_F(MemoryBufferTest, reference) { + OwningBuffer MB(MemoryBuffer::getMemBuffer(data)); + MemoryBufferRef MBR(*MB); + + EXPECT_EQ(MB->getBufferStart(), MBR.getBufferStart()); + EXPECT_EQ(MB->getBufferIdentifier(), MBR.getBufferIdentifier()); +} + + TEST_F(MemoryBufferTest, slice) { // Create a file that is six pages long with different data on each page. int FD;