Author: Nikita Popov Date: 2023-10-31T10:46:49+01:00 New Revision: 03ec84a00ba4d540222ab39c407e02959058fbdd
URL: https://github.com/llvm/llvm-project/commit/03ec84a00ba4d540222ab39c407e02959058fbdd DIFF: https://github.com/llvm/llvm-project/commit/03ec84a00ba4d540222ab39c407e02959058fbdd.diff LOG: Revert "Add two time-trace scope variables." This reverts commit 33b85867e30e1adc2ff2173039c199b81c10f52b. This causes a large compile-time regression (about 1% for unoptimized builds). Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Parse/Parser.cpp clang/unittests/Support/TimeProfilerTest.cpp Removed: clang/test/Driver/check-time-trace-ParseDeclarationOrFunctionDefinition.cpp ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index c151bd9d234b51e..bc28bb567f6932a 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -427,14 +427,6 @@ Improvements to Clang's diagnostics (or, more commonly, ``NULL`` when the platform defines it as ``__null``) to be more consistent with GCC. -Improvements to Clang's time-trace ----------------------------------- -- Two time-trace scope variables are added. A time trace scope variable of - ``ParseDeclarationOrFunctionDefinition`` with the function's source location - is added to record the time spent parsing the function's declaration or - definition. Another time trace scope variable of ``ParseFunctionDefinition`` - is also added to record the name of the defined function. - Bug Fixes in This Version ------------------------- - Fixed an issue where a class template specialization whose declaration is diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index bef3a0dcb285efd..0f930248e77174b 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -13,8 +13,8 @@ #include "clang/Parse/Parser.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" -#include "clang/AST/ASTLambda.h" #include "clang/AST/DeclTemplate.h" +#include "clang/AST/ASTLambda.h" #include "clang/Basic/FileManager.h" #include "clang/Parse/ParseDiagnostic.h" #include "clang/Parse/RAIIObjectsForParser.h" @@ -22,7 +22,6 @@ #include "clang/Sema/ParsedTemplate.h" #include "clang/Sema/Scope.h" #include "llvm/Support/Path.h" -#include "llvm/Support/TimeProfiler.h" using namespace clang; @@ -1230,13 +1229,6 @@ Parser::DeclGroupPtrTy Parser::ParseDeclOrFunctionDefInternal( Parser::DeclGroupPtrTy Parser::ParseDeclarationOrFunctionDefinition( ParsedAttributes &Attrs, ParsedAttributes &DeclSpecAttrs, ParsingDeclSpec *DS, AccessSpecifier AS) { - // Add an enclosing time trace scope for a bunch of small scopes with - // "EvaluateAsConstExpr". - llvm::TimeTraceScope TimeScope( - "ParseDeclarationOrFunctionDefinition", - Tok.getLocation().printToString( - Actions.getASTContext().getSourceManager())); - if (DS) { return ParseDeclOrFunctionDefInternal(Attrs, DeclSpecAttrs, *DS, AS); } else { @@ -1267,10 +1259,6 @@ Parser::DeclGroupPtrTy Parser::ParseDeclarationOrFunctionDefinition( Decl *Parser::ParseFunctionDefinition(ParsingDeclarator &D, const ParsedTemplateInfo &TemplateInfo, LateParsedAttrList *LateParsedAttrs) { - llvm::TimeTraceScope TimeScope( - "ParseFunctionDefinition", - Actions.GetNameForDeclarator(D).getName().getAsString()); - // Poison SEH identifiers so they are flagged as illegal in function bodies. PoisonSEHIdentifiersRAIIObject PoisonSEHIdentifiers(*this, true); const DeclaratorChunk::FunctionTypeInfo &FTI = D.getFunctionTypeInfo(); diff --git a/clang/test/Driver/check-time-trace-ParseDeclarationOrFunctionDefinition.cpp b/clang/test/Driver/check-time-trace-ParseDeclarationOrFunctionDefinition.cpp deleted file mode 100644 index f854cddadbfcc1d..000000000000000 --- a/clang/test/Driver/check-time-trace-ParseDeclarationOrFunctionDefinition.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// RUN: %clangxx -S -ftime-trace -ftime-trace-granularity=0 -o %T/check-time-trace-ParseDeclarationOrFunctionDefinition %s -// RUN: cat %T/check-time-trace-ParseDeclarationOrFunctionDefinition.json \ -// RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \ -// RUN: | FileCheck %s - -// CHECK-DAG: "name": "ParseDeclarationOrFunctionDefinition" -// CHECK-DAG: "detail": "{{.*}}check-time-trace-ParseDeclarationOrFunctionDefinition.cpp:15:1" -// CHECK-DAG: "name": "ParseFunctionDefinition" -// CHECK-DAG: "detail": "foo" -// CHECK-DAG: "name": "ParseFunctionDefinition" -// CHECK-DAG: "detail": "bar" - -template <typename T> -void foo(T) {} -void bar() { foo(0); } diff --git a/clang/unittests/Support/TimeProfilerTest.cpp b/clang/unittests/Support/TimeProfilerTest.cpp index 97fdbb7232b1351..a7ca2bf91e474ef 100644 --- a/clang/unittests/Support/TimeProfilerTest.cpp +++ b/clang/unittests/Support/TimeProfilerTest.cpp @@ -177,29 +177,22 @@ constexpr int slow_init_list[] = {1, 1, 2, 3, 5, 8, 13, 21}; // 25th line std::string TraceGraph = buildTraceGraph(Json); ASSERT_TRUE(TraceGraph == R"( Frontend -| ParseDeclarationOrFunctionDefinition (test.cc:2:1) -| ParseDeclarationOrFunctionDefinition (test.cc:6:1) -| | ParseFunctionDefinition (slow_func) -| | | EvaluateAsRValue (<test.cc:8:21>) -| | | EvaluateForOverflow (<test.cc:8:21, col:25>) -| | | EvaluateForOverflow (<test.cc:8:30, col:32>) -| | | EvaluateAsRValue (<test.cc:9:14>) -| | | EvaluateForOverflow (<test.cc:9:9, col:14>) -| | | isPotentialConstantExpr (slow_namespace::slow_func) -| | | EvaluateAsBooleanCondition (<test.cc:8:21, col:25>) -| | | | EvaluateAsRValue (<test.cc:8:21, col:25>) -| | | EvaluateAsBooleanCondition (<test.cc:8:21, col:25>) -| | | | EvaluateAsRValue (<test.cc:8:21, col:25>) -| ParseDeclarationOrFunctionDefinition (test.cc:16:1) -| | ParseFunctionDefinition (slow_test) -| | | EvaluateAsInitializer (slow_value) -| | | EvaluateAsConstantExpr (<test.cc:17:33, col:59>) -| | | EvaluateAsConstantExpr (<test.cc:18:11, col:37>) -| ParseDeclarationOrFunctionDefinition (test.cc:22:1) -| | EvaluateAsConstantExpr (<test.cc:23:31, col:57>) -| | EvaluateAsRValue (<test.cc:22:14, line:23:58>) -| ParseDeclarationOrFunctionDefinition (test.cc:25:1) -| | EvaluateAsInitializer (slow_init_list) +| EvaluateAsRValue (<test.cc:8:21>) +| EvaluateForOverflow (<test.cc:8:21, col:25>) +| EvaluateForOverflow (<test.cc:8:30, col:32>) +| EvaluateAsRValue (<test.cc:9:14>) +| EvaluateForOverflow (<test.cc:9:9, col:14>) +| isPotentialConstantExpr (slow_namespace::slow_func) +| EvaluateAsBooleanCondition (<test.cc:8:21, col:25>) +| | EvaluateAsRValue (<test.cc:8:21, col:25>) +| EvaluateAsBooleanCondition (<test.cc:8:21, col:25>) +| | EvaluateAsRValue (<test.cc:8:21, col:25>) +| EvaluateAsInitializer (slow_value) +| EvaluateAsConstantExpr (<test.cc:17:33, col:59>) +| EvaluateAsConstantExpr (<test.cc:18:11, col:37>) +| EvaluateAsConstantExpr (<test.cc:23:31, col:57>) +| EvaluateAsRValue (<test.cc:22:14, line:23:58>) +| EvaluateAsInitializer (slow_init_list) | PerformPendingInstantiations )"); @@ -220,9 +213,8 @@ struct { std::string TraceGraph = buildTraceGraph(Json); ASSERT_TRUE(TraceGraph == R"( Frontend -| ParseDeclarationOrFunctionDefinition (test.c:2:1) -| | isIntegerConstantExpr (<test.c:3:18>) -| | EvaluateKnownConstIntCheckOverflow (<test.c:3:18>) +| isIntegerConstantExpr (<test.c:3:18>) +| EvaluateKnownConstIntCheckOverflow (<test.c:3:18>) | PerformPendingInstantiations )"); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits