https://github.com/vsapsai created 
https://github.com/llvm/llvm-project/pull/181963

So far higher visibility is more confusing than actionable. Keep the 
information available but make it less prominent.

rdar://159857416

>From 2a15929ae607f5b7ec23af2d75b03b90bbb2de5a Mon Sep 17 00:00:00 2001
From: Volodymyr Sapsai <[email protected]>
Date: Tue, 17 Feb 2026 21:38:31 -0800
Subject: [PATCH] [modules] Move diagnostic about specific mtime/size change
 into a note from an error.

So far higher visibility is more confusing than actionable. Keep the
information available but make it less prominent.

rdar://159857416
---
 clang/include/clang/Basic/DiagnosticSerializationKinds.td | 5 +++--
 clang/lib/Serialization/ASTReader.cpp                     | 5 +++--
 clang/test/Modules/validate-file-content.m                | 3 ++-
 clang/test/PCH/include-timestamp.cpp                      | 3 ++-
 clang/test/PCH/validate-file-content.m                    | 3 ++-
 clang/test/PCH/verify_pch.m                               | 3 ++-
 6 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/clang/include/clang/Basic/DiagnosticSerializationKinds.td 
b/clang/include/clang/Basic/DiagnosticSerializationKinds.td
index 229f0bacbd796..c0f0563944b4e 100644
--- a/clang/include/clang/Basic/DiagnosticSerializationKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSerializationKinds.td
@@ -19,9 +19,10 @@ def err_fe_pch_malformed_block : Error<
     "malformed block record in PCH file: '%0'">, DefaultFatal;
 def err_fe_ast_file_modified : Error<
     "file '%0' has been modified since the "
-    "%select{precompiled header|module file|precompiled file}1 '%2' was built"
-    ": %select{size|mtime|content}3 changed%select{| (was %5, now %6)}4">,
+    "%select{precompiled header|module file|precompiled file}1 '%2' was 
built">,
     DefaultFatal;
+def note_fe_ast_file_modified : Note<
+    "%select{size|mtime|content}0 changed%select{| from expected %2 to %3}1">;
 def err_fe_pch_file_overridden : Error<
     "file '%0' from the precompiled header has been overridden">;
 def note_ast_file_required_by : Note<"'%0' required by '%1'">;
diff --git a/clang/lib/Serialization/ASTReader.cpp 
b/clang/lib/Serialization/ASTReader.cpp
index f3902d57e3d1f..6417642ae86e1 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -2985,8 +2985,9 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned 
ID, bool Complain) {
       StringRef TopLevelASTFileName(ImportStack.back()->FileName);
       Diag(diag::err_fe_ast_file_modified)
           << *Filename << moduleKindForDiagnostic(ImportStack.back()->Kind)
-          << TopLevelASTFileName << FileChange.Kind
-          << (FileChange.Old && FileChange.New)
+          << TopLevelASTFileName;
+      Diag(diag::note_fe_ast_file_modified)
+          << FileChange.Kind << (FileChange.Old && FileChange.New)
           << llvm::itostr(FileChange.Old.value_or(0))
           << llvm::itostr(FileChange.New.value_or(0));
 
diff --git a/clang/test/Modules/validate-file-content.m 
b/clang/test/Modules/validate-file-content.m
index 1eae7748165c1..fdc9d0a98ef84 100644
--- a/clang/test/Modules/validate-file-content.m
+++ b/clang/test/Modules/validate-file-content.m
@@ -24,7 +24,8 @@
 // RUN: not %clang_cc1 -fsyntax-only -fmodules-cache-path=%t/cache -fmodules 
-fimplicit-module-maps -I %t -include-pch %t/a.pch %s 
-fvalidate-ast-input-files-content 2> %t/stderr
 // RUN: FileCheck %s < %t/stderr
 //
-// CHECK: file '[[M_H:.*[/\\]m\.h]]' has been modified since the precompiled 
header '[[A_PCH:.*[/\\]a\.pch]]' was built: content changed
+// CHECK: file '[[M_H:.*[/\\]m\.h]]' has been modified since the precompiled 
header '[[A_PCH:.*[/\\]a\.pch]]' was built
+// CHECK: note: content changed
 // CHECK: '[[M_H]]' required by '[[M_PCM:.*[/\\]m.*\.pcm]]'
 // CHECK: '[[M_PCM]]' required by '[[A_PCH]]'
 // CHECK: please rebuild precompiled file '[[A_PCH]]'
diff --git a/clang/test/PCH/include-timestamp.cpp 
b/clang/test/PCH/include-timestamp.cpp
index 0bee9b7f235cd..abf5c266dc6a7 100644
--- a/clang/test/PCH/include-timestamp.cpp
+++ b/clang/test/PCH/include-timestamp.cpp
@@ -31,4 +31,5 @@ void g() { f(); }
 // CHECK-BITCODE-TIMESTAMP-ON: <INPUT_FILE abbrevid={{.*}} op0={{.*}} 
op1={{.*}} op2={{[^0]}}
 // CHECK-BITCODE-TIMESTAMP-OFF: <INPUT_FILE abbrevid={{.*}} op0={{.*}} 
op1={{.*}} op2={{[0]}}
 
-// CHECK-TIMESTAMP: fatal error: file {{.*}} has been modified since the 
precompiled header {{.*}} was built: mtime changed (was {{.*}}, now {{.*}})
+// CHECK-TIMESTAMP: fatal error: file {{.*}} has been modified since the 
precompiled header {{.*}} was built
+// CHECK-TIMESTAMP: note: mtime changed from expected {{.*}} to {{.*}}
diff --git a/clang/test/PCH/validate-file-content.m 
b/clang/test/PCH/validate-file-content.m
index 289dbff1a8c20..df5edc7adfba4 100644
--- a/clang/test/PCH/validate-file-content.m
+++ b/clang/test/PCH/validate-file-content.m
@@ -22,6 +22,7 @@
 // RUN: not %clang_cc1 -fsyntax-only -I %t -include-pch %t/a.pch %s 
-fvalidate-ast-input-files-content 2> %t/stderr
 // RUN: FileCheck %s < %t/stderr
 //
-// CHECK: file '[[M_H:.*[/\\]m\.h]]' has been modified since the precompiled 
header '[[A_PCH:.*[/\\]a\.pch]]' was built: content changed
+// CHECK: file '[[M_H:.*[/\\]m\.h]]' has been modified since the precompiled 
header '[[A_PCH:.*[/\\]a\.pch]]' was built
+// CHECK: note: content changed
 // CHECK: please rebuild precompiled file '[[A_PCH]]'
 // expected-no-diagnostics
diff --git a/clang/test/PCH/verify_pch.m b/clang/test/PCH/verify_pch.m
index 82a11da2ac1e7..a885dcee15ccf 100644
--- a/clang/test/PCH/verify_pch.m
+++ b/clang/test/PCH/verify_pch.m
@@ -17,7 +17,8 @@
 // RUN: echo ' ' >> %t.h
 // RUN: not %clang_cc1 -isystem %t/usr/include -verify-pch %t.pch 2> %t.log.2
 // RUN: FileCheck -check-prefix=CHECK-STALE-DEP %s < %t.log.2
-// CHECK-STALE-DEP: file '{{.*}}.h' has been modified since the precompiled 
header '{{.*}}.pch' was built: size changed (was {{.*}}, now {{.*}})
+// CHECK-STALE-DEP: file '{{.*}}.h' has been modified since the precompiled 
header '{{.*}}.pch' was built
+// CHECK-STALE-DEP: note: size changed from expected {{.*}} to {{.*}}
 
 // Stale dependency in system header
 // RUN: %clang_cc1 -isystem %t/usr/include -x objective-c-header -emit-pch -o 
%t.pch %t.h

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to