Author: Utkarsh Saxena Date: 2024-07-22T17:10:41+02:00 New Revision: 280b04f65a169f09249031e5e12a30584ce2e8e0
URL: https://github.com/llvm/llvm-project/commit/280b04f65a169f09249031e5e12a30584ce2e8e0 DIFF: https://github.com/llvm/llvm-project/commit/280b04f65a169f09249031e5e12a30584ce2e8e0.diff LOG: Record mainfile name in the Frontend time trace (#99866) Added: Modified: clang/lib/Parse/ParseAST.cpp clang/unittests/Support/TimeProfilerTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Parse/ParseAST.cpp b/clang/lib/Parse/ParseAST.cpp index 77ab3b556da58..e008cc0e38ced 100644 --- a/clang/lib/Parse/ParseAST.cpp +++ b/clang/lib/Parse/ParseAST.cpp @@ -152,7 +152,15 @@ void clang::ParseAST(Sema &S, bool PrintStats, bool SkipFunctionBodies) { bool HaveLexer = S.getPreprocessor().getCurrentLexer(); if (HaveLexer) { - llvm::TimeTraceScope TimeScope("Frontend"); + llvm::TimeTraceScope TimeScope("Frontend", [&]() { + llvm::TimeTraceMetadata M; + if (llvm::isTimeTraceVerbose()) { + const SourceManager &SM = S.getSourceManager(); + if (const auto *FE = SM.getFileEntryForID(SM.getMainFileID())) + M.File = FE->tryGetRealPathName(); + } + return M; + }); P.Initialize(); Parser::DeclGroupPtrTy ADecl; Sema::ModuleImportState ImportState; diff --git a/clang/unittests/Support/TimeProfilerTest.cpp b/clang/unittests/Support/TimeProfilerTest.cpp index 56d880cffde61..f53fe71d630bf 100644 --- a/clang/unittests/Support/TimeProfilerTest.cpp +++ b/clang/unittests/Support/TimeProfilerTest.cpp @@ -76,18 +76,18 @@ bool compileFromString(StringRef Code, StringRef Standard, StringRef File, } std::string GetMetadata(json::Object *Event) { - std::string Metadata; - llvm::raw_string_ostream OS(Metadata); + std::string M; + llvm::raw_string_ostream OS(M); if (json::Object *Args = Event->getObject("args")) { if (auto Detail = Args->getString("detail")) OS << Detail; // Use only filename to not include os-specific path separators. if (auto File = Args->getString("file")) - OS << ", " << llvm::sys::path::filename(*File); + OS << (M.empty() ? "" : ", ") << llvm::sys::path::filename(*File); if (auto Line = Args->getInteger("line")) OS << ":" << *Line; } - return Metadata; + return M; } // Returns pretty-printed trace graph. @@ -209,7 +209,7 @@ constexpr int slow_init_list[] = {1, 1, 2, 3, 5, 8, 13, 21}; // 25th line ASSERT_TRUE(compileFromString(Code, "-std=c++20", "test.cc")); std::string Json = teardownProfiler(); ASSERT_EQ(R"( -Frontend +Frontend (test.cc) | ParseDeclarationOrFunctionDefinition (test.cc:2:1) | ParseDeclarationOrFunctionDefinition (test.cc:6:1) | | ParseFunctionDefinition (slow_func) @@ -266,7 +266,7 @@ TEST(TimeProfilerTest, TemplateInstantiations) { /*Headers=*/{{"a.h", A_H}, {"b.h", B_H}})); std::string Json = teardownProfiler(); ASSERT_EQ(R"( -Frontend +Frontend (test.cc) | ParseFunctionDefinition (fooB) | ParseFunctionDefinition (fooMTA) | ParseFunctionDefinition (fooA) @@ -291,7 +291,7 @@ struct { ASSERT_TRUE(compileFromString(Code, "-std=c99", "test.c")); std::string Json = teardownProfiler(); ASSERT_EQ(R"( -Frontend +Frontend (test.c) | ParseDeclarationOrFunctionDefinition (test.c:2:1) | | isIntegerConstantExpr (<test.c:3:18>) | | EvaluateKnownConstIntCheckOverflow (<test.c:3:18>) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits