karies added a comment.
Herald added a project: All.

Similar to the concern raised at 
https://github.com/llvm/llvm-project/commit/50fcf7285eeb001d751eadac5d001a0e216fd701
 we have received user reports about this patch: with `-Ino-access-permissions 
-Iall-good`, clang will throw an error (EACCES) even though header search goes 
on and will find the header in `all-good`. That seems a misleading an 
unnecessary error, especially as the header *is* found later, yet compilation 
"fails" because of this diagnostic.

I would propose to collect these errors, and where originally (before this 
patch), cling would complain "file not found" we could diagnose "while 
searching for this header, the following errors have been seen" and reporting 
the uniq-ed set of collected diags - but *only* in the case where the file 
cannot be found. This would prevent spurious diags during iteration through the 
SearchDirs when HeaderSearch actually finds the file. And I am fully aware that 
it's pointless to propose something without providing a differential :-/

FYI here's what we do right now to handle the EACCES case:

  patch
  --- a/interpreter/llvm/src/tools/clang/lib/Lex/HeaderSearch.cpp
  +++ b/interpreter/llvm/src/tools/clang/lib/Lex/HeaderSearch.cpp
  @@ -367,7 +367,9 @@ Optional<FileEntryRef> 
HeaderSearch::getFileAndSuggestModule(
       std::error_code EC = llvm::errorToErrorCode(File.takeError());
       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) {
  +        EC != llvm::errc::is_a_directory &&
  +        EC != llvm::errc::not_a_directory &&
  +        EC != llvm::errc::permission_denied) {
         Diags.Report(IncludeLoc, diag::err_cannot_open_file)
             << FileName << EC.message();
       }


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65956/new/

https://reviews.llvm.org/D65956

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to