https://github.com/ecnelises created 
https://github.com/llvm/llvm-project/pull/131608

None

>From c7d48ef991e3dbd798d880d846127a393c395d4e Mon Sep 17 00:00:00 2001
From: Qiu Chaofan <q...@ecnelises.com>
Date: Mon, 17 Mar 2025 20:49:02 +0800
Subject: [PATCH] [Clang] Check PP presence when printing stats

---
 clang/lib/Frontend/FrontendAction.cpp | 12 ++++++++----
 clang/test/Frontend/print-stats.ll    |  6 ++++++
 2 files changed, 14 insertions(+), 4 deletions(-)
 create mode 100644 clang/test/Frontend/print-stats.ll

diff --git a/clang/lib/Frontend/FrontendAction.cpp 
b/clang/lib/Frontend/FrontendAction.cpp
index 9f789f093f55d..a750953393759 100644
--- a/clang/lib/Frontend/FrontendAction.cpp
+++ b/clang/lib/Frontend/FrontendAction.cpp
@@ -1120,10 +1120,14 @@ void FrontendAction::EndSourceFile() {
 
   if (CI.getFrontendOpts().ShowStats) {
     llvm::errs() << "\nSTATISTICS FOR '" << getCurrentFileOrBufferName() << 
"':\n";
-    CI.getPreprocessor().PrintStats();
-    CI.getPreprocessor().getIdentifierTable().PrintStats();
-    CI.getPreprocessor().getHeaderSearchInfo().PrintStats();
-    CI.getSourceManager().PrintStats();
+    if (CI.hasPreprocessor()) {
+      CI.getPreprocessor().PrintStats();
+      CI.getPreprocessor().getIdentifierTable().PrintStats();
+      CI.getPreprocessor().getHeaderSearchInfo().PrintStats();
+    }
+    if (CI.hasSourceManager()) {
+      CI.getSourceManager().PrintStats();
+    }
     llvm::errs() << "\n";
   }
 
diff --git a/clang/test/Frontend/print-stats.ll 
b/clang/test/Frontend/print-stats.ll
new file mode 100644
index 0000000000000..6fd094470ba95
--- /dev/null
+++ b/clang/test/Frontend/print-stats.ll
@@ -0,0 +1,6 @@
+; RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -print-stats \
+; RUN:    -emit-llvm -x ir %s -o - 2>&1 | FileCheck %s
+
+; CHECK: *** Source Manager Stats
+; CHECK: *** File Manager Stats
+; CHECK: *** Virtual File System Stats

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to