[PATCH] D66143: Don't use std::errc

Alexey Bataev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 13 08:06:58 PDT 2019


ABataev created this revision.
ABataev added reviewers: thakis, rnk.
Herald added a project: clang.

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.


Repository:
  rC Clang

https://reviews.llvm.org/D66143

Files:
  lib/Lex/HeaderSearch.cpp


Index: lib/Lex/HeaderSearch.cpp
===================================================================
--- lib/Lex/HeaderSearch.cpp
+++ lib/Lex/HeaderSearch.cpp
@@ -30,6 +30,7 @@
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/Allocator.h"
 #include "llvm/Support/Capacity.h"
+#include "llvm/Support/Errc.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Path.h"
@@ -315,9 +316,9 @@
     // For rare, surprising errors (e.g. "out of file handles"), diag the EC
     // message.
     std::error_code EC = File.getError();
-    if (EC != std::errc::no_such_file_or_directory &&
-        EC != std::errc::invalid_argument && EC != std::errc::is_a_directory &&
-        EC != std::errc::not_a_directory) {
+    if (EC != llvm::errc::no_such_file_or_directory &&
+        EC != llvm::errc::invalid_argument &&
+        EC != llvm::errc::is_a_directory && EC != llvm::errc::not_a_directory) {
       Diags.Report(IncludeLoc, diag::err_cannot_open_file)
           << FileName << EC.message();
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66143.214842.patch
Type: text/x-patch
Size: 1056 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190813/2fe3bc44/attachment.bin>


More information about the cfe-commits mailing list