summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-11 19:05:50 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-11 19:05:50 +0000
commit7acd886ecfa0adc8a14476eafe8cf1fa981cfe18 (patch)
tree28c91d4858225f439de5d76169b368659cbbb448 /tools
parent9ce94d7df4acff893bf095323250b8a84663a1fd (diff)
downloadllvm-7acd886ecfa0adc8a14476eafe8cf1fa981cfe18.tar.gz
llvm-7acd886ecfa0adc8a14476eafe8cf1fa981cfe18.tar.bz2
llvm-7acd886ecfa0adc8a14476eafe8cf1fa981cfe18.tar.xz
Use std::error_code instead of llvm::error_code.
The idea of this patch is to turn llvm/Support/system_error.h into a transitional header that just brings in the erorr_code api to the llvm namespace. I will remove it shortly afterwards. The cases where the general idea needed some tweaking: * std::errc is a namespace in msvc, so we cannot use "using std::errc". I could add an #ifdef, but there were not that many uses, so I just added std:: to them in this patch. * Template specialization had to be moved to the std namespace in this patch set already. * The msvc implementation of default_error_condition doesn't seem to provide the same transformations as we need. Not too surprising since the standard doesn't actually say what "equivalent" means. I fixed the problem by keeping our old mapping and using it at error_code construction time. Despite these shortcomings I think this is still a good thing. Some reasons: * The different implementations of system_error might improve over time. * It removes 925 lines of code from llvm already. * It removes 6313 bytes from the text segment of the clang binary when it is built with gcc and 2816 bytes when building with clang and libstdc++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210687 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-ar/llvm-ar.cpp6
-rw-r--r--tools/llvm-cov/llvm-cov.cpp2
-rw-r--r--tools/llvm-objdump/llvm-objdump.h1
-rw-r--r--tools/llvm-readobj/Error.cpp2
-rw-r--r--tools/llvm-readobj/Error.h6
-rw-r--r--tools/llvm-readobj/ObjDumper.h4
-rw-r--r--tools/llvm-readobj/llvm-readobj.h2
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.cpp2
-rw-r--r--tools/obj2yaml/Error.cpp2
-rw-r--r--tools/obj2yaml/Error.h6
10 files changed, 17 insertions, 16 deletions
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index ea85d5d3c9..77914c5792 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -453,7 +453,7 @@ int NewArchiveIterator::getFD() const {
// Linux cannot open directories with open(2), although
// cygwin and *bsd can.
if (NewStatus.type() == sys::fs::file_type::directory_file)
- failIfError(make_error_code(errc::is_a_directory), NewFilename);
+ failIfError(make_error_code(std::errc::is_a_directory), NewFilename);
return NewFD;
}
@@ -939,7 +939,7 @@ static int performOperation(ArchiveOperation Operation) {
// Create or open the archive object.
std::unique_ptr<MemoryBuffer> Buf;
error_code EC = MemoryBuffer::getFile(ArchiveName, Buf, -1, false);
- if (EC && EC != llvm::errc::no_such_file_or_directory) {
+ if (EC && EC != std::errc::no_such_file_or_directory) {
errs() << ToolName << ": error opening '" << ArchiveName
<< "': " << EC.message() << "!\n";
return 1;
@@ -957,7 +957,7 @@ static int performOperation(ArchiveOperation Operation) {
return 0;
}
- assert(EC == llvm::errc::no_such_file_or_directory);
+ assert(EC == std::errc::no_such_file_or_directory);
if (!shouldCreateArchive(Operation)) {
failIfError(EC, Twine("error loading '") + ArchiveName + "'");
diff --git a/tools/llvm-cov/llvm-cov.cpp b/tools/llvm-cov/llvm-cov.cpp
index 9463609ae3..f15b9a0265 100644
--- a/tools/llvm-cov/llvm-cov.cpp
+++ b/tools/llvm-cov/llvm-cov.cpp
@@ -116,7 +116,7 @@ int main(int argc, char **argv) {
std::unique_ptr<MemoryBuffer> GCDA_Buff;
if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCDA, GCDA_Buff)) {
- if (ec != errc::no_such_file_or_directory) {
+ if (ec != std::errc::no_such_file_or_directory) {
errs() << InputGCDA << ": " << ec.message() << "\n";
return 1;
}
diff --git a/tools/llvm-objdump/llvm-objdump.h b/tools/llvm-objdump/llvm-objdump.h
index b716a264c8..30f2eea81f 100644
--- a/tools/llvm-objdump/llvm-objdump.h
+++ b/tools/llvm-objdump/llvm-objdump.h
@@ -22,7 +22,6 @@ namespace object {
class ObjectFile;
class RelocationRef;
}
-class error_code;
extern cl::opt<std::string> TripleName;
extern cl::opt<std::string> ArchName;
diff --git a/tools/llvm-readobj/Error.cpp b/tools/llvm-readobj/Error.cpp
index a68ebeb58e..a276fcedb8 100644
--- a/tools/llvm-readobj/Error.cpp
+++ b/tools/llvm-readobj/Error.cpp
@@ -50,7 +50,7 @@ std::string _readobj_error_category::message(int EV) const {
error_condition _readobj_error_category::default_error_condition(int EV) const {
if (static_cast<readobj_error>(EV) == readobj_error::success)
return error_condition();
- return errc::invalid_argument;
+ return std::errc::invalid_argument;
}
namespace llvm {
diff --git a/tools/llvm-readobj/Error.h b/tools/llvm-readobj/Error.h
index ebf652e9a1..b3aab327cb 100644
--- a/tools/llvm-readobj/Error.h
+++ b/tools/llvm-readobj/Error.h
@@ -33,8 +33,10 @@ inline error_code make_error_code(readobj_error e) {
return error_code(static_cast<int>(e), readobj_category());
}
-template <> struct is_error_code_enum<readobj_error> : std::true_type { };
-
} // namespace llvm
+namespace std {
+template <> struct is_error_code_enum<llvm::readobj_error> : std::true_type {};
+}
+
#endif
diff --git a/tools/llvm-readobj/ObjDumper.h b/tools/llvm-readobj/ObjDumper.h
index 9e0fd2f990..0c7eb5109f 100644
--- a/tools/llvm-readobj/ObjDumper.h
+++ b/tools/llvm-readobj/ObjDumper.h
@@ -10,6 +10,8 @@
#ifndef LLVM_READOBJ_OBJDUMPER_H
#define LLVM_READOBJ_OBJDUMPER_H
+#include "llvm/Support/system_error.h"
+
#include <memory>
namespace llvm {
@@ -18,8 +20,6 @@ namespace object {
class ObjectFile;
}
-class error_code;
-
class StreamWriter;
class ObjDumper {
diff --git a/tools/llvm-readobj/llvm-readobj.h b/tools/llvm-readobj/llvm-readobj.h
index cc5c85d8da..61ee0d4ed4 100644
--- a/tools/llvm-readobj/llvm-readobj.h
+++ b/tools/llvm-readobj/llvm-readobj.h
@@ -18,8 +18,6 @@ namespace llvm {
class RelocationRef;
}
- class error_code;
-
// Various helper functions.
bool error(error_code ec);
bool relocAddressLess(object::RelocationRef A,
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp
index 3e71111b00..125e63f225 100644
--- a/tools/llvm-symbolizer/LLVMSymbolize.cpp
+++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp
@@ -311,7 +311,7 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) {
getDarwinDWARFResourceForPath(Path);
BinaryOrErr = createBinary(ResourcePath);
error_code EC = BinaryOrErr.getError();
- if (EC != errc::no_such_file_or_directory && !error(EC)) {
+ if (EC != std::errc::no_such_file_or_directory && !error(EC)) {
DbgBin = BinaryOrErr.get();
ParsedBinariesAndObjects.push_back(std::unique_ptr<Binary>(DbgBin));
}
diff --git a/tools/obj2yaml/Error.cpp b/tools/obj2yaml/Error.cpp
index 3aa472fc3d..ab615ee193 100644
--- a/tools/obj2yaml/Error.cpp
+++ b/tools/obj2yaml/Error.cpp
@@ -42,7 +42,7 @@ error_condition
_obj2yaml_error_category::default_error_condition(int ev) const {
if (static_cast<obj2yaml_error>(ev) == obj2yaml_error::success)
return error_condition();
- return errc::invalid_argument;
+ return std::errc::invalid_argument;
}
namespace llvm {
diff --git a/tools/obj2yaml/Error.h b/tools/obj2yaml/Error.h
index 4aaf5c7942..7180d54307 100644
--- a/tools/obj2yaml/Error.h
+++ b/tools/obj2yaml/Error.h
@@ -27,8 +27,10 @@ inline error_code make_error_code(obj2yaml_error e) {
return error_code(static_cast<int>(e), obj2yaml_category());
}
-template <> struct is_error_code_enum<obj2yaml_error> : std::true_type { };
-
} // namespace llvm
+namespace std {
+template <> struct is_error_code_enum<llvm::obj2yaml_error> : std::true_type {};
+}
+
#endif