https://github.com/rosefromthedead created https://github.com/llvm/llvm-project/pull/190975
This reverts commit 9a1860c45a915328b392fa1af0bbc75dbe96af7f. Due to a compile-time regression: https://llvm-compile-time-tracker.com/compare.php?from=c146e9fce8b46f2495a57c8ce7696da4da9d2a13&to=9a1860c45a915328b392fa1af0bbc75dbe96af7f&stat=instructions:u >From 5dfe7a9348851e400b1181bae0b64d18a1248592 Mon Sep 17 00:00:00 2001 From: Rose Hudson <[email protected]> Date: Wed, 8 Apr 2026 14:48:27 +0100 Subject: [PATCH] Revert "[clang][Lex] add -Wnonportable-include-path-separator (#186770)" This reverts commit 9a1860c45a915328b392fa1af0bbc75dbe96af7f. Due to a compile-time regression: https://llvm-compile-time-tracker.com/compare.php?from=c146e9fce8b46f2495a57c8ce7696da4da9d2a13&to=9a1860c45a915328b392fa1af0bbc75dbe96af7f&stat=instructions:u --- clang/docs/ReleaseNotes.rst | 6 ----- clang/include/clang/Basic/DiagnosticGroups.td | 3 --- .../include/clang/Basic/DiagnosticLexKinds.td | 5 +---- clang/include/clang/Basic/SourceManager.h | 9 -------- clang/lib/Lex/PPDirectives.cpp | 11 ---------- clang/test/Lexer/backslash-include-win.c | 22 ------------------- 6 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 clang/test/Lexer/backslash-include-win.c diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 2da7175b51ea3..f6c0eb1e18d14 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -360,12 +360,6 @@ Improvements to Clang's diagnostics - Clang now emits an error when implicitly casting a complex type to a built-in vector type. (#GH186805) -- Added ``-Wnonportable-include-path-separator`` (off by default) to catch - #include directives that use backslashes as a path separator. The warning - includes a FixIt to change all the backslashes to forward slashes, so that the - code can automatically be made portable to other host platforms that don't - support backslashes. - Improvements to Clang's time-trace ---------------------------------- diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index 98902b3d9caa8..52b786c46bd7c 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -176,9 +176,6 @@ def NullConversion : DiagGroup<"null-conversion">; def ImplicitConversionFloatingPointToBool : DiagGroup<"implicit-conversion-floating-point-to-bool">; def ObjCLiteralConversion : DiagGroup<"objc-literal-conversion">; -def NonportableIncludePathSeparator : DiagGroup<"nonportable-include-path-separator">; -def NonportableIncludePath : DiagGroup<"nonportable-include-path", - [NonportableIncludePathSeparator]>; def MacroRedefined : DiagGroup<"macro-redefined">; def BuiltinMacroRedefined : DiagGroup<"builtin-macro-redefined">; def BuiltinRequiresHeader : DiagGroup<"builtin-requires-header">; diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index 07afc69793499..bea0aafac98cf 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -377,12 +377,9 @@ class NonportablePath : Warning< "non-portable path to file '%0'; specified path differs in case from file" " name on disk">; def pp_nonportable_path : NonportablePath, - InGroup<NonportableIncludePath>; + InGroup<DiagGroup<"nonportable-include-path">>; def pp_nonportable_system_path : NonportablePath, DefaultIgnore, InGroup<DiagGroup<"nonportable-system-include-path">>; -def pp_nonportable_path_separator : Warning< - "non-portable path to file '%0'; specified path contains backslashes">, - DefaultIgnore, InGroup<NonportableIncludePathSeparator>; def pp_pragma_once_in_main_file : Warning<"#pragma once in main file">, InGroup<DiagGroup<"pragma-once-outside-header">>; diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h index 4217b8683da1e..bc9e97863556d 100644 --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -1526,15 +1526,6 @@ class SourceManager : public RefCountedBase<SourceManager> { return Filename == "<scratch space>"; } - /// Returns whether \p Loc is located in a <module-includes> file. - bool isWrittenInModuleIncludes(SourceLocation Loc) const { - PresumedLoc Presumed = getPresumedLoc(Loc); - if (Presumed.isInvalid()) - return false; - StringRef Filename(Presumed.getFilename()); - return Filename == "<module-includes>"; - } - /// Returns whether \p Loc is located in a built-in or command line source. bool isInPredefinedFile(SourceLocation Loc) const { PresumedLoc Presumed = getPresumedLoc(Loc); diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index 172c2fa57db00..b90c04776ff9e 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -2731,17 +2731,6 @@ Preprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport( Diag(FilenameTok, DiagId) << Path << FixItHint::CreateReplacement(FilenameRange, Path); } - - bool SuppressBackslashDiag = - FilenameLoc.isMacroID() || - SourceMgr.isWrittenInBuiltinFile(FilenameLoc) || - SourceMgr.isWrittenInModuleIncludes(FilenameLoc); - if (!SuppressBackslashDiag && OriginalFilename.contains('\\')) { - std::string SuggestedPath = OriginalFilename.str(); - llvm::replace(SuggestedPath, '\\', '/'); - Diag(FilenameTok, diag::pp_nonportable_path_separator) - << Name << FixItHint::CreateReplacement(FilenameRange, SuggestedPath); - } } switch (Action) { diff --git a/clang/test/Lexer/backslash-include-win.c b/clang/test/Lexer/backslash-include-win.c deleted file mode 100644 index a07325550093f..0000000000000 --- a/clang/test/Lexer/backslash-include-win.c +++ /dev/null @@ -1,22 +0,0 @@ -// REQUIRES: system-windows -// RUN: mkdir -p %t/backslash -// RUN: cp %S/Inputs/case-insensitive-include.h %t/backslash/case-insensitive-include.h -// RUN: %clang_cc1 -fsyntax-only -Wnonportable-include-path-separator -I%t %s 2>&1 | FileCheck --check-prefixes=CHECK-ENABLED,CHECK-ALL %s -// RUN: %clang_cc1 -fsyntax-only -Wnonportable-include-path -Wno-nonportable-include-path-separator -I%t %s 2>&1 | FileCheck --check-prefix=CHECK-DISABLED,CHECK-ALL %s - -#include "backslash\case-insensitive-include.h" -// CHECK-ENABLED: non-portable path to file -// CHECK-ENABLED: specified path contains backslashes -// CHECK-ENABLED: "backslash/case-insensitive-include.h" -// CHECK-DISABLED-NOT: non-portable path to file - -// Despite fixing the same span, nonportable-include-path is still a separate diagnostic -// that can fire at the same time. -#include "backslash\CASE-insensitive-include.h" -// CHECK-ALL: non-portable path to file -// CHECK-ALL: specified path differs in case from file name on disk -// CHECK-ALL: "backslash\case-insensitive-include.h" -// CHECK-ENABLED: non-portable path to file -// CHECK-ENABLED: specified path contains backslashes -// CHECK-ENABLED: "backslash/CASE-insensitive-include.h" -// CHECK-DISABLED-NOT: non-portable path to file _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
