[clang] Added macro name to redifine and undef macro as a part of the issue#88882 (PR #167299)

via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 10 03:32:11 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Sai Deepak Sana (saideepaksana)

<details>
<summary>Changes</summary>

For the issue #<!-- -->88882, 
files changed `clang/include/clang/Basic/DiagnosticLexKinds.td`, `clang/lib/Lex/PPDirectives.cpp`. I tried adding %0 place holder in the .td file, so by passing the identifier info of the redefined builtin macro, so now it says clearly which macro affected, before it was `warning: redefining builtin macro` and now it is `warning: redefining builtin macro '__FILE__'`. 

---
Full diff: https://github.com/llvm/llvm-project/pull/167299.diff


2 Files Affected:

- (modified) clang/include/clang/Basic/DiagnosticLexKinds.td (+1-1) 
- (modified) clang/lib/Lex/PPDirectives.cpp (+2-2) 


``````````diff
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td
index 417187222e448..e9339f473c67a 100644
--- a/clang/include/clang/Basic/DiagnosticLexKinds.td
+++ b/clang/include/clang/Basic/DiagnosticLexKinds.td
@@ -396,7 +396,7 @@ def pp_out_of_date_dependency : Warning<
   "current file is older than dependency %0">;
 def ext_pp_undef_builtin_macro : ExtWarn<"undefining builtin macro">,
   InGroup<BuiltinMacroRedefined>;
-def ext_pp_redef_builtin_macro : ExtWarn<"redefining builtin macro">,
+def ext_pp_redef_builtin_macro : ExtWarn<"redefining builtin macro '%0'">,
   InGroup<BuiltinMacroRedefined>;
 def pp_disabled_macro_expansion : Warning<
   "disabled expansion of recursive macro">, DefaultIgnore,
diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp
index 891c8ab7f3155..38780f4fc9a89 100644
--- a/clang/lib/Lex/PPDirectives.cpp
+++ b/clang/lib/Lex/PPDirectives.cpp
@@ -3289,7 +3289,7 @@ void Preprocessor::HandleDefineDirective(
       // Warn if defining "__LINE__" and other builtins, per C99 6.10.8/4 and
       // C++ [cpp.predefined]p4, but allow it as an extension.
       if (isLanguageDefinedBuiltin(SourceMgr, OtherMI, II->getName()))
-        Diag(MacroNameTok, diag::ext_pp_redef_builtin_macro);
+        Diag(MacroNameTok, diag::ext_pp_redef_builtin_macro) << MacroNameTok.getIdentifierInfo(); // inserting this diagonstic message into stream.
       // Macros must be identical.  This means all tokens and whitespace
       // separation must be the same.  C99 6.10.3p2.
       else if (!OtherMI->isAllowRedefinitionsWithoutWarning() &&
@@ -3354,7 +3354,7 @@ void Preprocessor::HandleUndefDirective() {
     // Warn if undefining "__LINE__" and other builtins, per C99 6.10.8/4 and
     // C++ [cpp.predefined]p4, but allow it as an extension.
     if (isLanguageDefinedBuiltin(SourceMgr, MI, II->getName()))
-      Diag(MacroNameTok, diag::ext_pp_undef_builtin_macro);
+      Diag(MacroNameTok, diag::ext_pp_undef_builtin_macro) << MacroNameTok.getIdentifierInfo(); // inserting this diagnostic message into it
 
     if (MI->isWarnIfUnused())
       WarnUnusedMacroLocs.erase(MI->getDefinitionLoc());

``````````

</details>


https://github.com/llvm/llvm-project/pull/167299


More information about the cfe-commits mailing list