Use an enum class.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 3 Jun 2014 05:12:33 +0000 (05:12 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 3 Jun 2014 05:12:33 +0000 (05:12 +0000)
Might also fix the windows build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210077 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ProfileData/InstrProf.h
lib/ProfileData/InstrProf.cpp

index 8457678c4ec6d4c5440898b4aefe2fd33c241392..b08084cd689497269854e05530d290d47bd0060b 100644 (file)
@@ -22,8 +22,7 @@ namespace llvm {
 
 const error_category &instrprof_category();
 
 
 const error_category &instrprof_category();
 
-struct instrprof_error {
-  enum ErrorType {
+enum class instrprof_error {
     success = 0,
     eof,
     bad_magic,
     success = 0,
     eof,
     bad_magic,
@@ -37,11 +36,6 @@ struct instrprof_error {
     hash_mismatch,
     count_mismatch,
     counter_overflow
     hash_mismatch,
     count_mismatch,
     counter_overflow
-  };
-  ErrorType V;
-
-  instrprof_error(ErrorType V) : V(V) {}
-  operator ErrorType() const { return V; }
 };
 
 inline error_code make_error_code(instrprof_error E) {
 };
 
 inline error_code make_error_code(instrprof_error E) {
@@ -49,8 +43,6 @@ inline error_code make_error_code(instrprof_error E) {
 }
 
 template <> struct is_error_code_enum<instrprof_error> : std::true_type {};
 }
 
 template <> struct is_error_code_enum<instrprof_error> : std::true_type {};
-template <> struct is_error_code_enum<instrprof_error::ErrorType>
-  : std::true_type {};
 
 } // end namespace llvm
 
 
 } // end namespace llvm
 
index 60a8efb2a6ad7ed13fed380fb0de0b7e18cd65de..a6583130ee7451ae4a5a1fcdfefa96fd166971ec 100644 (file)
@@ -21,7 +21,7 @@ namespace {
 class InstrProfErrorCategoryType : public error_category {
   const char *name() const override { return "llvm.instrprof"; }
   std::string message(int IE) const override {
 class InstrProfErrorCategoryType : public error_category {
   const char *name() const override { return "llvm.instrprof"; }
   std::string message(int IE) const override {
-    instrprof_error::ErrorType E = static_cast<instrprof_error::ErrorType>(IE);
+    instrprof_error E = static_cast<instrprof_error>(IE);
     switch (E) {
     case instrprof_error::success:
       return "Success";
     switch (E) {
     case instrprof_error::success:
       return "Success";
@@ -53,7 +53,7 @@ class InstrProfErrorCategoryType : public error_category {
     llvm_unreachable("A value of instrprof_error has no message.");
   }
   error_condition default_error_condition(int EV) const override {
     llvm_unreachable("A value of instrprof_error has no message.");
   }
   error_condition default_error_condition(int EV) const override {
-    if (EV == instrprof_error::success)
+    if (static_cast<instrprof_error>(EV) == instrprof_error::success)
       return error_condition();
     return errc::invalid_argument;
   }
       return error_condition();
     return errc::invalid_argument;
   }