[PATCH] [Support] Add MemoryBuffer::getFileSlice()

Rafael Ávila de Espíndola rafael.espindola at gmail.com
Tue Oct 7 12:23:42 PDT 2014

I think this is a good idea. It is perfectly reasonable for a tool to know that it needs only a part of a file and let the OS unmap the rest.

I noticed some horrible inconsistencies in the pre existing code and fixed them. I should hopefully make this change a bit simpler.

Comment at: include/llvm/Support/MemoryBuffer.h:135
@@ +134,3 @@
+  static ErrorOr<std::unique_ptr<MemoryBuffer>>
+  getFileSlice(StringRef Filename, uint64_t Offset, uint64_t Length);
For consistency with getOpenFileSlice, please make this

  getFileSlice(const Twine &Filename, uint64_t MapSize,  int64_t Offset);

or update getOpenFileSlice.

Comment at: lib/Support/MemoryBuffer.cpp:174
@@ +173,3 @@
+  int FD;
+  std::error_code EC = sys::fs::openFileForRead(NullTermName.data(), FD);
+  if (EC)
Can't you just add an MapSize argument to getFileAux?


More information about the llvm-commits mailing list