[clang] [Clang] Check PP presence when printing stats (PR #131608)
Qiu Chaofan via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 25 20:01:29 PDT 2025
https://github.com/ecnelises updated https://github.com/llvm/llvm-project/pull/131608
>From 60b1e16b7b297095a50ed8db644b787e35f8eab0 Mon Sep 17 00:00:00 2001
From: Qiu Chaofan <qcf at ecnelises.com>
Date: Mon, 17 Mar 2025 20:49:02 +0800
Subject: [PATCH 1/2] [Clang] Check PP presence when printing stats
---
clang/lib/Frontend/FrontendAction.cpp | 12 ++++++++----
clang/test/Frontend/print-stats.c | 20 ++++++++++++++++++++
2 files changed, 28 insertions(+), 4 deletions(-)
create mode 100644 clang/test/Frontend/print-stats.c
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.c b/clang/test/Frontend/print-stats.c
new file mode 100644
index 0000000000000..c29717b120fc0
--- /dev/null
+++ b/clang/test/Frontend/print-stats.c
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -print-stats \
+// RUN: -emit-llvm -x ir /dev/null -o - 2>&1 | FileCheck %s --check-prefix=CHECK-IR
+// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -print-stats \
+// RUN: -emit-llvm -x c /dev/null -o - 2>&1 | FileCheck %s --check-prefix=CHECK-C
+
+// CHECK-IR: *** Source Manager Stats
+// CHECK-IR: *** File Manager Stats
+// CHECK-IR: *** Virtual File System Stats
+
+// CHECK-C: *** Semantic Analysis Stats
+// CHECK-C: *** Analysis Based Warnings Stats
+// CHECK-C: *** AST Context Stats
+// CHECK-C: *** Decl Stats
+// CHECK-C: *** Stmt/Expr Stats
+// CHECK-C: *** Preprocessor Stats
+// CHECK-C: *** Identifier Table Stats
+// CHECK-C: *** HeaderSearch Stats
+// CHECK-C: *** Source Manager Stats
+// CHECK-C: *** File Manager Stats
+// CHECK-C: *** Virtual File System Stats
>From 629966fa570b3b6e6c26aab5ce69e732919f9062 Mon Sep 17 00:00:00 2001
From: Qiu Chaofan <qcf at ecnelises.com>
Date: Wed, 26 Mar 2025 11:01:14 +0800
Subject: [PATCH 2/2] Add release note
---
clang/docs/ReleaseNotes.rst | 2 ++
1 file changed, 2 insertions(+)
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 8182bccdd2da8..75ecc5f495f2e 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -373,6 +373,8 @@ Miscellaneous Bug Fixes
Miscellaneous Clang Crashes Fixed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+- Fixed crash when ``-print-stats`` is enabled in compiling IR files. (#GH131608)
+
OpenACC Specific Changes
------------------------
More information about the cfe-commits
mailing list