[all-commits] [llvm/llvm-project] 4481ee: [ASTImporter] Properly delete decls from SavedImpo...
Raphael Isemann via All-commits
all-commits at lists.llvm.org
Wed Jan 22 06:20:44 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 4481eefbe8425c63289186dd13319aaa7043e67f
https://github.com/llvm/llvm-project/commit/4481eefbe8425c63289186dd13319aaa7043e67f
Author: Jaroslav Sevcik <jarin at google.com>
Date: 2020-01-22 (Wed, 22 Jan 2020)
Changed paths:
M clang/lib/AST/ASTImporter.cpp
Log Message:
-----------
[ASTImporter] Properly delete decls from SavedImportPaths
Summary:
We see a significant regression (~40% slower on large codebases) in expression evaluation after https://reviews.llvm.org/rL364771. A sampling profile shows the extra time is spent in SavedImportPathsTy::operator[] when called from ASTImporter::Import. I believe this is because ASTImporter::Import adds an element to the SavedImportPaths map for each decl unconditionally (see https://github.com/llvm/llvm-project/blob/7b81c3f8793d30a4285095a9b67dcfca2117916c/clang/lib/AST/ASTImporter.cpp#L8256).
To fix this, we call SavedImportPathsTy::erase on the declaration rather than clearing its value vector. That way we do not accidentally introduce new empty elements. (With this patch the performance is restored, and we do not see SavedImportPathsTy::operator[] in the profile anymore.)
Reviewers: martong, teemperor, a.sidorin, shafik
Reviewed By: martong
Subscribers: rnkovacs, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D73166
More information about the All-commits
mailing list