diff options
author | Tyker <tyker1@outlook.com> | 2020-07-14 21:41:45 +0200 |
---|---|---|
committer | Tyker <tyker1@outlook.com> | 2020-07-14 21:49:14 +0200 |
commit | 16f777f4217cfcdcf6ddce8eb1e3525a65563c43 (patch) | |
tree | 98eedd7869b26bb19629ed4999972a896c145e7e /llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp | |
parent | 00d97b758e8d3286abb7bd07899e4d3aed6e8165 (diff) | |
download | llvm-16f777f4217cfcdcf6ddce8eb1e3525a65563c43.zip llvm-16f777f4217cfcdcf6ddce8eb1e3525a65563c43.tar.gz llvm-16f777f4217cfcdcf6ddce8eb1e3525a65563c43.tar.bz2 |
[NFC] Add debug and stat counters to assume queries and assume builder
Summary:
Add debug counter and stats counter to assume queries and assume builder
here is the collected stats on a build of check-llvm + check-clang.
"assume-builder.NumAssumeBuilt": 2720879,
"assume-builder.NumAssumesMerged": 761396,
"assume-builder.NumAssumesRemoved": 1576212,
"assume-builder.NumBundlesInAssumes": 6518809,
"assume-queries.NumAssumeQueries": 85566380,
"assume-queries.NumUsefullAssumeQueries": 2727360,
the NumUsefullAssumeQueries stat is actually pessimistic because in a few places queries
ask to keep providing information to try to get better information. and this isn't counted
as a usefull query evem tho it can be usefull
Reviewers: jdoerfert
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83506
Diffstat (limited to 'llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp b/llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp index f2208ed..7ff73fc 100644 --- a/llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp +++ b/llvm/lib/Transforms/Utils/AssumeBundleBuilder.cpp @@ -6,9 +6,12 @@ // //===----------------------------------------------------------------------===// +#define DEBUG_TYPE "assume-builder" + #include "llvm/Transforms/Utils/AssumeBundleBuilder.h" #include "llvm/ADT/DepthFirstIterator.h" #include "llvm/ADT/MapVector.h" +#include "llvm/ADT/Statistic.h" #include "llvm/Analysis/AssumeBundleQueries.h" #include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/ValueTracking.h" @@ -19,6 +22,7 @@ #include "llvm/IR/Module.h" #include "llvm/InitializePasses.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/DebugCounter.h" #include "llvm/Transforms/Utils/Local.h" using namespace llvm; @@ -33,6 +37,16 @@ cl::opt<bool> EnableKnowledgeRetention( cl::desc( "enable preservation of attributes throughout code transformation")); +STATISTIC(NumAssumeBuilt, "Number of assume built by the assume builder"); +STATISTIC(NumBundlesInAssumes, "Total number of Bundles in the assume built"); +STATISTIC(NumAssumesMerged, + "Number of assume merged by the assume simplify pass"); +STATISTIC(NumAssumesRemoved, + "Number of assume removed by the assume simplify pass"); + +DEBUG_COUNTER(BuildAssumeCounter, "assume-builder-counter", + "Controls which assumes gets created"); + namespace { bool isUsefullToPreserve(Attribute::AttrKind Kind) { @@ -204,6 +218,8 @@ struct AssumeBuilderState { IntrinsicInst *build() { if (AssumedKnowledgeMap.empty()) return nullptr; + if (!DebugCounter::shouldExecute(BuildAssumeCounter)) + return nullptr; Function *FnAssume = Intrinsic::getDeclaration(M, Intrinsic::assume); LLVMContext &C = M->getContext(); SmallVector<OperandBundleDef, 8> OpBundle; @@ -220,7 +236,9 @@ struct AssumeBuilderState { OpBundle.push_back(OperandBundleDefT<Value *>( std::string(Attribute::getNameFromAttrKind(MapElem.first.second)), Args)); + NumBundlesInAssumes++; } + NumAssumeBuilt++; return cast<IntrinsicInst>(CallInst::Create( FnAssume, ArrayRef<Value *>({ConstantInt::getTrue(C)}), OpBundle)); } @@ -328,6 +346,10 @@ struct AssumeSimplify { (!ForceCleanup && !isAssumeWithEmptyBundle(*Assume))) continue; MadeChange = true; + if (ForceCleanup) + NumAssumesMerged++; + else + NumAssumesRemoved++; Assume->eraseFromParent(); } CleanupToDo.clear(); |