diff options
Diffstat (limited to 'include/llvm/Support')
-rw-r--r-- | include/llvm/Support/IRReader.h | 17 | ||||
-rw-r--r-- | include/llvm/Support/MemoryBuffer.h | 25 | ||||
-rw-r--r-- | include/llvm/Support/system_error.h | 5 |
3 files changed, 27 insertions, 20 deletions
diff --git a/include/llvm/Support/IRReader.h b/include/llvm/Support/IRReader.h index a44da528ac..a2002ef224 100644 --- a/include/llvm/Support/IRReader.h +++ b/include/llvm/Support/IRReader.h @@ -23,6 +23,7 @@ #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/SourceMgr.h" +#include "llvm/Support/system_error.h" namespace llvm { @@ -56,11 +57,11 @@ namespace llvm { inline Module *getLazyIRFileModule(const std::string &Filename, SMDiagnostic &Err, LLVMContext &Context) { - std::string ErrMsg; - MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), &ErrMsg); + error_code ec; + MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), ec); if (F == 0) { - Err = SMDiagnostic(Filename, - "Could not open input file: " + ErrMsg); + Err = SMDiagnostic(Filename, + "Could not open input file: " + ec.message()); return 0; } @@ -94,11 +95,11 @@ namespace llvm { inline Module *ParseIRFile(const std::string &Filename, SMDiagnostic &Err, LLVMContext &Context) { - std::string ErrMsg; - MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), &ErrMsg); + error_code ec; + MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), ec); if (F == 0) { - Err = SMDiagnostic(Filename, - "Could not open input file: " + ErrMsg); + Err = SMDiagnostic(Filename, + "Could not open input file: " + ec.message()); return 0; } diff --git a/include/llvm/Support/MemoryBuffer.h b/include/llvm/Support/MemoryBuffer.h index aaa49f5479..6dc49d899f 100644 --- a/include/llvm/Support/MemoryBuffer.h +++ b/include/llvm/Support/MemoryBuffer.h @@ -16,10 +16,11 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Support/DataTypes.h" -#include <string> namespace llvm { +class error_code; + /// MemoryBuffer - This interface provides simple read-only access to a block /// of memory, and provides simple methods for reading files and standard input /// into a memory buffer. In addition to basic access to the characters in the @@ -46,8 +47,8 @@ public: const char *getBufferEnd() const { return BufferEnd; } size_t getBufferSize() const { return BufferEnd-BufferStart; } - StringRef getBuffer() const { - return StringRef(BufferStart, getBufferSize()); + StringRef getBuffer() const { + return StringRef(BufferStart, getBufferSize()); } /// getBufferIdentifier - Return an identifier for this buffer, typically the @@ -60,16 +61,16 @@ public: /// MemoryBuffer if successful, otherwise returning null. If FileSize is /// specified, this means that the client knows that the file exists and that /// it has the specified size. - static MemoryBuffer *getFile(StringRef Filename, std::string *ErrStr = 0, + static MemoryBuffer *getFile(StringRef Filename, error_code &ec, int64_t FileSize = -1); - static MemoryBuffer *getFile(const char *Filename, std::string *ErrStr = 0, + static MemoryBuffer *getFile(const char *Filename, error_code &ec, int64_t FileSize = -1); /// getOpenFile - Given an already-open file descriptor, read the file and /// return a MemoryBuffer. This takes ownership of the descriptor, /// immediately closing it after reading the file. static MemoryBuffer *getOpenFile(int FD, const char *Filename, - std::string *ErrStr = 0, + error_code &ec, int64_t FileSize = -1); /// getMemBuffer - Open the specified memory range as a MemoryBuffer. Note @@ -97,18 +98,18 @@ public: StringRef BufferName = ""); /// getSTDIN - Read all of stdin into a file buffer, and return it. - /// If an error occurs, this returns null and fills in *ErrStr with a reason. - static MemoryBuffer *getSTDIN(std::string *ErrStr = 0); + /// If an error occurs, this returns null and sets ec. + static MemoryBuffer *getSTDIN(error_code &ec); /// getFileOrSTDIN - Open the specified file as a MemoryBuffer, or open stdin - /// if the Filename is "-". If an error occurs, this returns null and fills - /// in *ErrStr with a reason. + /// if the Filename is "-". If an error occurs, this returns null and sets + /// ec. static MemoryBuffer *getFileOrSTDIN(StringRef Filename, - std::string *ErrStr = 0, + error_code &ec, int64_t FileSize = -1); static MemoryBuffer *getFileOrSTDIN(const char *Filename, - std::string *ErrStr = 0, + error_code &ec, int64_t FileSize = -1); }; diff --git a/include/llvm/Support/system_error.h b/include/llvm/Support/system_error.h index 40f5b3cd7f..e5306ecfb3 100644 --- a/include/llvm/Support/system_error.h +++ b/include/llvm/Support/system_error.h @@ -668,6 +668,11 @@ public: const error_category& generic_category(); const error_category& system_category(); +/// Get the error_category used for errno values from POSIX functions. This is +/// the same as the system_category on POISIX systems, but is the same as the +/// generic_category on Windows. +const error_category& posix_category(); + class error_condition { int _val_; |