weiwang updated this revision to Diff 419261. weiwang added a comment. fix typo
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122759/new/ https://reviews.llvm.org/D122759 Files: clang/include/clang/Frontend/FrontendAction.h clang/include/clang/Parse/ParseAST.h clang/lib/CodeGen/BackendUtil.cpp clang/lib/CodeGen/CodeGenAction.cpp clang/lib/Frontend/FrontendAction.cpp clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp clang/lib/Parse/ParseAST.cpp
Index: clang/lib/Parse/ParseAST.cpp =================================================================== --- clang/lib/Parse/ParseAST.cpp +++ clang/lib/Parse/ParseAST.cpp @@ -23,6 +23,7 @@ #include "clang/Sema/TemplateInstCallback.h" #include "llvm/Support/CrashRecoveryContext.h" #include "llvm/Support/TimeProfiler.h" +#include "llvm/Support/Timer.h" #include <cstdio> #include <memory> @@ -111,7 +112,8 @@ ParseAST(*S.get(), PrintStats, SkipFunctionBodies); } -void clang::ParseAST(Sema &S, bool PrintStats, bool SkipFunctionBodies) { +void clang::ParseAST(Sema &S, bool PrintStats, bool SkipFunctionBodies, + bool TimePassesIsEnabled) { // Collect global stats on Decls/Stmts (until we have a module streamer). if (PrintStats) { Decl::EnableStatistics(); @@ -152,6 +154,8 @@ if (HaveLexer) { llvm::TimeTraceScope TimeScope("Frontend"); + llvm::NamedRegionTimer T("Parse AST", "Parse AST", "Clang Compilation", + "Clang Compilation", TimePassesIsEnabled); P.Initialize(); Parser::DeclGroupPtrTy ADecl; Sema::ModuleImportState ImportState; Index: clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp =================================================================== --- clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -186,6 +186,9 @@ Act = std::make_unique<ASTMergeAction>(std::move(Act), FEOpts.ASTMergeFiles); + if (CI.getCodeGenOpts().TimePasses) + Act->enableTimePasses(); + return Act; } Index: clang/lib/Frontend/FrontendAction.cpp =================================================================== --- clang/lib/Frontend/FrontendAction.cpp +++ clang/lib/Frontend/FrontendAction.cpp @@ -1137,7 +1137,7 @@ CI.createSema(getTranslationUnitKind(), CompletionConsumer); ParseAST(CI.getSema(), CI.getFrontendOpts().ShowStats, - CI.getFrontendOpts().SkipFunctionBodies); + CI.getFrontendOpts().SkipFunctionBodies, isTimePassesEnabled()); } void PluginASTAction::anchor() { } Index: clang/lib/CodeGen/CodeGenAction.cpp =================================================================== --- clang/lib/CodeGen/CodeGenAction.cpp +++ clang/lib/CodeGen/CodeGenAction.cpp @@ -294,6 +294,9 @@ void HandleTranslationUnit(ASTContext &C) override { { llvm::TimeTraceScope TimeScope("Frontend"); + llvm::NamedRegionTimer T("IR Generation", "IR Generation", + "Clang Compilation", "Clang Compilation", + CodeGenOpts.TimePasses); PrettyStackTraceString CrashInfo("Per-file LLVM IR generation"); if (TimerIsEnabled) { LLVMIRGenerationRefCount += 1; Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -1500,6 +1500,8 @@ { PrettyStackTraceString CrashInfo("Optimizer"); llvm::TimeTraceScope TimeScope("Optimizer"); + llvm::NamedRegionTimer T("Optimizer", "Optimizer", "Clang Compilation", + "Clang Compilation", CodeGenOpts.TimePasses); MPM.run(*TheModule, MAM); } } @@ -1536,6 +1538,9 @@ { PrettyStackTraceString CrashInfo("Code generation"); llvm::TimeTraceScope TimeScope("CodeGenPasses"); + llvm::NamedRegionTimer T("CodeGenPasses", "CodeGenPasses", + "Clang Compilation", "Clang Compilation", + CodeGenOpts.TimePasses); CodeGenPasses.run(*TheModule); } } Index: clang/include/clang/Parse/ParseAST.h =================================================================== --- clang/include/clang/Parse/ParseAST.h +++ clang/include/clang/Parse/ParseAST.h @@ -44,7 +44,8 @@ /// Parse the main file known to the preprocessor, producing an /// abstract syntax tree. void ParseAST(Sema &S, bool PrintStats = false, - bool SkipFunctionBodies = false); + bool SkipFunctionBodies = false, + bool TimePassesIsEnabled = false); } // end namespace clang Index: clang/include/clang/Frontend/FrontendAction.h =================================================================== --- clang/include/clang/Frontend/FrontendAction.h +++ clang/include/clang/Frontend/FrontendAction.h @@ -37,6 +37,7 @@ FrontendInputFile CurrentInput; std::unique_ptr<ASTUnit> CurrentASTUnit; CompilerInstance *Instance; + bool TimePassesIsEnabled = false; friend class ASTMergeAction; friend class WrapperFrontendAction; @@ -167,6 +168,9 @@ void setCurrentInput(const FrontendInputFile &CurrentInput, std::unique_ptr<ASTUnit> AST = nullptr); + bool isTimePassesEnabled() { return TimePassesIsEnabled; } + void enableTimePasses() { TimePassesIsEnabled = true; } + /// @} /// @name Supported Modes /// @{
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits