forked from OSchip/llvm-project
[CTU] Add statistics
Reviewers: xazax.hun, a_sidorin Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits Differential Revision: https://reviews.llvm.org/D55133 llvm-svn: 348584
This commit is contained in:
parent
75f6caddab
commit
700a29a153
|
@ -21,6 +21,7 @@
|
|||
#include "clang/Frontend/TextDiagnosticPrinter.h"
|
||||
#include "clang/Index/USRGeneration.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
|
@ -32,6 +33,15 @@ namespace clang {
|
|||
namespace cross_tu {
|
||||
|
||||
namespace {
|
||||
#define DEBUG_TYPE "CrossTranslationUnit"
|
||||
STATISTIC(NumGetCTUCalled, "The # of getCTUDefinition function called");
|
||||
STATISTIC(
|
||||
NumNotInOtherTU,
|
||||
"The # of getCTUDefinition called but the function is not in any other TU");
|
||||
STATISTIC(NumGetCTUSuccess,
|
||||
"The # of getCTUDefinition successfully returned the "
|
||||
"requested function's body");
|
||||
|
||||
// FIXME: This class is will be removed after the transition to llvm::Error.
|
||||
class IndexErrorCategory : public std::error_category {
|
||||
public:
|
||||
|
@ -151,6 +161,7 @@ CrossTranslationUnitContext::getCrossTUDefinition(const FunctionDecl *FD,
|
|||
StringRef CrossTUDir,
|
||||
StringRef IndexName) {
|
||||
assert(!FD->hasBody() && "FD has a definition in current translation unit!");
|
||||
++NumGetCTUCalled;
|
||||
const std::string LookupFnName = getLookupName(FD);
|
||||
if (LookupFnName.empty())
|
||||
return llvm::make_error<IndexError>(
|
||||
|
@ -216,8 +227,10 @@ llvm::Expected<ASTUnit *> CrossTranslationUnitContext::loadExternalAST(
|
|||
}
|
||||
|
||||
auto It = FunctionFileMap.find(LookupName);
|
||||
if (It == FunctionFileMap.end())
|
||||
if (It == FunctionFileMap.end()) {
|
||||
++NumNotInOtherTU;
|
||||
return llvm::make_error<IndexError>(index_error_code::missing_definition);
|
||||
}
|
||||
StringRef ASTFileName = It->second;
|
||||
auto ASTCacheEntry = FileASTUnitMap.find(ASTFileName);
|
||||
if (ASTCacheEntry == FileASTUnitMap.end()) {
|
||||
|
@ -250,6 +263,7 @@ CrossTranslationUnitContext::importDefinition(const FunctionDecl *FD) {
|
|||
cast<FunctionDecl>(Importer.Import(const_cast<FunctionDecl *>(FD)));
|
||||
assert(ToDecl->hasBody());
|
||||
assert(FD->hasBody() && "Functions already imported should have body.");
|
||||
++NumGetCTUSuccess;
|
||||
return ToDecl;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue