Don't use std::errc.

As noted on Errc.h:

// * std::errc is just marked with is_error_condition_enum. This means that
//   common patters like AnErrorCode == errc::no_such_file_or_directory take
//   4 virtual calls instead of two comparisons.

And on some libstdc++ those virtual functions conclude that

------------------------
int main() {
  std::error_code foo = std::make_error_code(std::errc::no_such_file_or_directory);
  return foo == std::errc::no_such_file_or_directory;
}
-------------------------

should exit with 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239683 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2015-06-13 17:23:04 +00:00
parent 4692cb1303
commit 803fe19680
5 changed files with 12 additions and 8 deletions

View File

@@ -67,8 +67,8 @@ TEST(ErrorOr, Covariant) {
}
TEST(ErrorOr, Comparison) {
ErrorOr<int> x(std::errc::no_such_file_or_directory);
EXPECT_EQ(x, std::errc::no_such_file_or_directory);
ErrorOr<int> x(errc::no_such_file_or_directory);
EXPECT_EQ(x, errc::no_such_file_or_directory);
}
// ErrorOr<int*> x(nullptr);