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 <q...@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 <q...@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 ------------------------ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits