r368739 - Don't use std::errc

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 13 18:31:49 PDT 2019


>From the review: This is for gcc 4.8 compat, not for the other reasons
mentioned in the CL description.

On Tue, Aug 13, 2019 at 3:31 PM Alexey Bataev via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: abataev
> Date: Tue Aug 13 12:32:36 2019
> New Revision: 368739
>
> URL: http://llvm.org/viewvc/llvm-project?rev=368739&view=rev
> Log:
> Don't use std::errc
>
> Summary:
> 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.
>
> Reviewers: thakis, rnk, jfb
>
> Reviewed By: thakis
>
> Subscribers: lebedev.ri, dexonsmith, xbolva00, cfe-commits, caomhin
>
> Tags: #clang
>
> Differential Revision: https://reviews.llvm.org/D66143
>
> Modified:
>     cfe/trunk/lib/Lex/HeaderSearch.cpp
>
> Modified: cfe/trunk/lib/Lex/HeaderSearch.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/HeaderSearch.cpp?rev=368739&r1=368738&r2=368739&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Lex/HeaderSearch.cpp (original)
> +++ cfe/trunk/lib/Lex/HeaderSearch.cpp Tue Aug 13 12:32:36 2019
> @@ -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 @@ const FileEntry *HeaderSearch::getFileAn
>      // 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();
>      }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190813/a9c74f21/attachment.html>


More information about the cfe-commits mailing list