summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Support/IRReader.h17
-rw-r--r--include/llvm/Support/MemoryBuffer.h25
-rw-r--r--include/llvm/Support/system_error.h5
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_;