[clang-tools-extra] d820772 - Revert "[Serialization] Place command line defines in the correct file"

Felipe de Azevedo Piovezan via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 24 11:50:27 PDT 2023


Author: Felipe de Azevedo Piovezan
Date: 2023-03-24T14:49:47-04:00
New Revision: d820772ce17215c3e2c0f72d16b2d3f14a8745fb

URL: https://github.com/llvm/llvm-project/commit/d820772ce17215c3e2c0f72d16b2d3f14a8745fb
DIFF: https://github.com/llvm/llvm-project/commit/d820772ce17215c3e2c0f72d16b2d3f14a8745fb.diff

LOG: Revert "[Serialization] Place command line defines in the correct file"

This reverts commit 72073fc95cd4793a853925ddc8cc3fb2118808a5.

Added: 
    

Modified: 
    clang-tools-extra/clangd/index/SymbolCollector.cpp
    clang/docs/ReleaseNotes.rst
    clang/lib/Serialization/ASTReader.cpp
    clang/lib/Serialization/ASTWriter.cpp
    clang/test/PCH/ms-pch-macro.c

Removed: 
    clang/test/PCH/macro-cmdline.c


################################################################################
diff  --git a/clang-tools-extra/clangd/index/SymbolCollector.cpp b/clang-tools-extra/clangd/index/SymbolCollector.cpp
index 519aceec15a18..3179810b1b185 100644
--- a/clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ b/clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -687,10 +687,8 @@ bool SymbolCollector::handleMacroOccurrence(const IdentifierInfo *Name,
 
   const auto &SM = PP->getSourceManager();
   auto DefLoc = MI->getDefinitionLoc();
-  // Also avoid storing macros that aren't defined in any file, i.e. predefined
-  // macros like __DBL_MIN__ and those defined on the command line.
+  // Also avoid storing predefined macros like __DBL_MIN__.
   if (SM.isWrittenInBuiltinFile(DefLoc) ||
-      SM.isWrittenInCommandLineFile(DefLoc) ||
       Name->getName() == "__GCC_HAVE_DWARF2_CFI_ASM")
     return true;
 

diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 526ea11303708..1f18de92b920c 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -177,8 +177,8 @@ Improvements to Clang's diagnostics
 - Diagnostic notes and fix-its are now generated for ``ifunc``/``alias`` attributes
   which point to functions whose names are mangled.
 - Diagnostics relating to macros on the command line of a preprocessed assembly
-  file or precompiled header are now reported as coming from the file
-  ``<command line>`` instead of ``<built-in>``.
+  file are now reported as coming from the file ``<command line>`` instead of
+  ``<built-in>``.
 - Clang constexpr evaluator now provides a more concise diagnostic when calling
   function pointer that is known to be null.
 - Clang now avoids duplicate warnings on unreachable ``[[fallthrough]];`` statements

diff  --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 6654df40010cb..0273fa1b839a5 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -654,10 +654,6 @@ static bool checkPreprocessorOptions(
   SmallVector<StringRef, 4> ExistingMacroNames;
   collectMacroDefinitions(ExistingPPOpts, ExistingMacros, &ExistingMacroNames);
 
-  // Use a line marker to enter the <command line> file, as the defines and
-  // undefines here will have come from the command line.
-  SuggestedPredefines += "# 1 \"<command line>\" 1\n";
-
   for (unsigned I = 0, N = ExistingMacroNames.size(); I != N; ++I) {
     // Dig out the macro definition in the existing preprocessor options.
     StringRef MacroName = ExistingMacroNames[I];
@@ -717,10 +713,6 @@ static bool checkPreprocessorOptions(
     }
     return true;
   }
-
-  // Leave the <command line> file and return to <built-in>.
-  SuggestedPredefines += "# 1 \"<built-in>\" 2\n";
-
   if (Validation == OptionValidateStrictMatches) {
     // If strict matches are requested, don't tolerate any extra defines in
     // the AST file that are missing on the command line.
@@ -1587,13 +1579,8 @@ bool ASTReader::ReadSLocEntry(int ID) {
     auto Buffer = ReadBuffer(SLocEntryCursor, Name);
     if (!Buffer)
       return true;
-    FileID FID = SourceMgr.createFileID(std::move(Buffer), FileCharacter, ID,
-                                        BaseOffset + Offset, IncludeLoc);
-    if (Record[3]) {
-      auto &FileInfo =
-          const_cast<SrcMgr::FileInfo &>(SourceMgr.getSLocEntry(FID).getFile());
-      FileInfo.setHasLineDirectives();
-    }
+    SourceMgr.createFileID(std::move(Buffer), FileCharacter, ID,
+                           BaseOffset + Offset, IncludeLoc);
     break;
   }
 

diff  --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 31e44b52929f4..d89ee4e6199fc 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -4444,11 +4444,6 @@ void ASTWriter::AddString(StringRef Str, RecordDataImpl &Record) {
 bool ASTWriter::PreparePathForOutput(SmallVectorImpl<char> &Path) {
   assert(Context && "should have context when outputting path");
 
-  // Leave special file names as they are.
-  StringRef PathStr(Path.data(), Path.size());
-  if (PathStr == "<built-in>" || PathStr == "<command line>")
-    return false;
-
   bool Changed =
       cleanPathForOutput(Context->getSourceManager().getFileManager(), Path);
 

diff  --git a/clang/test/PCH/macro-cmdline.c b/clang/test/PCH/macro-cmdline.c
deleted file mode 100644
index c4647f5d4c92e..0000000000000
--- a/clang/test/PCH/macro-cmdline.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-pch -o %t1.pch -DMACRO1=1
-// RUN: %clang_cc1 -fsyntax-only %s -include-pch %t1.pch -DMACRO2=1 2>&1 | FileCheck %s
-
-#ifndef HEADER
-#define HEADER
-#else
-#define MACRO1 2
-// CHECK: macro-cmdline.c{{.*}}'MACRO1' macro redefined
-// CHECK: <command line>{{.*}}previous definition is here
-#define MACRO2 2
-// CHECK: macro-cmdline.c{{.*}}'MACRO2' macro redefined
-// CHECK: <command line>{{.*}}previous definition is here
-#endif

diff  --git a/clang/test/PCH/ms-pch-macro.c b/clang/test/PCH/ms-pch-macro.c
index a512e66e24866..3a8052eb322e9 100644
--- a/clang/test/PCH/ms-pch-macro.c
+++ b/clang/test/PCH/ms-pch-macro.c
@@ -36,4 +36,4 @@ BAR bar = 17;
 // CHECK-FOO: definition of macro 'FOO' 
diff ers between the precompiled header ('1') and the command line ('blah')
 // CHECK-NOFOO: macro 'FOO' was defined in the precompiled header but undef'd on the command line
 
-// expected-warning at 2 {{definition of macro 'BAR' does not match definition in precompiled header}}
+// expected-warning at 1 {{definition of macro 'BAR' does not match definition in precompiled header}}


        


More information about the cfe-commits mailing list