Use an enum class.

Might also fix the windows build.

llvm-svn: 210077
This commit is contained in:
Rafael Espindola 2014-06-03 05:12:33 +00:00
parent c7dd10b221
commit 92512e89a2
2 changed files with 3 additions and 11 deletions

View File

@ -22,8 +22,7 @@ namespace llvm {
const error_category &instrprof_category();
struct instrprof_error {
enum ErrorType {
enum class instrprof_error {
success = 0,
eof,
bad_magic,
@ -37,11 +36,6 @@ struct instrprof_error {
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) {
@ -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::ErrorType>
: std::true_type {};
} // end namespace llvm

View 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 {
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";
@ -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 {
if (EV == instrprof_error::success)
if (static_cast<instrprof_error>(EV) == instrprof_error::success)
return error_condition();
return errc::invalid_argument;
}