r368475 - Don't diagnose errors when a file matches an include component

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 9 12:49:14 PDT 2019


Author: rnk
Date: Fri Aug  9 12:49:14 2019
New Revision: 368475

URL: http://llvm.org/viewvc/llvm-project?rev=368475&view=rev
Log:
Don't diagnose errors when a file matches an include component

This regressed in r368322, and was reported as PR42948 and on the
mailing list. The fix is to ignore the specific error code for this
case. The problem doesn't seem to reproduce on Windows, where a
different error code is used instead.

Added:
    cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/
    cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/file-and-dir
    cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/
    cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/
    cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/foo.h
    cfe/trunk/test/Preprocessor/include-header-file-and-dir.c
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=368475&r1=368474&r2=368475&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/HeaderSearch.cpp (original)
+++ cfe/trunk/lib/Lex/HeaderSearch.cpp Fri Aug  9 12:49:14 2019
@@ -316,7 +316,8 @@ const FileEntry *HeaderSearch::getFileAn
     // 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::invalid_argument && EC != std::errc::is_a_directory &&
+        EC != std::errc::not_a_directory) {
       Diags.Report(IncludeLoc, diag::err_cannot_open_file)
           << FileName << EC.message();
     }

Added: cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/file-and-dir
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/file-and-dir?rev=368475&view=auto
==============================================================================
    (empty)

Added: cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/foo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/foo.h?rev=368475&view=auto
==============================================================================
--- cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/foo.h (added)
+++ cfe/trunk/test/Preprocessor/Inputs/include-file-and-dir/incdir/file-and-dir/foo.h Fri Aug  9 12:49:14 2019
@@ -0,0 +1 @@
+included_foo_dot_h

Added: cfe/trunk/test/Preprocessor/include-header-file-and-dir.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/include-header-file-and-dir.c?rev=368475&view=auto
==============================================================================
--- cfe/trunk/test/Preprocessor/include-header-file-and-dir.c (added)
+++ cfe/trunk/test/Preprocessor/include-header-file-and-dir.c Fri Aug  9 12:49:14 2019
@@ -0,0 +1,4 @@
+// RUN: %clang_cc1 -E -P %s -I%S/Inputs/include-file-and-dir -I%S/Inputs/include-file-and-dir/incdir -o - | FileCheck %s
+#include "file-and-dir/foo.h"
+
+// CHECK: included_foo_dot_h




More information about the cfe-commits mailing list