aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2022-11-15 07:39:40 -0800
committerTeresa Johnson <tejohnson@google.com>2022-11-15 07:39:40 -0800
commit452a14efc84edf808d1e2953dad2c694972b312f (patch)
treec8257d815249816bbf8b34f61ff011f125303470 /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
parentdb5855d0e49c1a220bb7ba1cd61e6101a4a8626f (diff)
downloadllvm-452a14efc84edf808d1e2953dad2c694972b312f.zip
llvm-452a14efc84edf808d1e2953dad2c694972b312f.tar.gz
llvm-452a14efc84edf808d1e2953dad2c694972b312f.tar.bz2
Revert "[MemProf] ThinLTO summary support"
This reverts commit 47459455009db4790ffc3765a2ec0f8b4934c2a4. Revert while I try to fix a couple of non-Linux build failures.
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/ModuleSummaryAnalysis.cpp62
1 files changed, 2 insertions, 60 deletions
diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
index e8309f5..52827c2 100644
--- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
+++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
@@ -24,7 +24,6 @@
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/IndirectCallPromotionAnalysis.h"
#include "llvm/Analysis/LoopInfo.h"
-#include "llvm/Analysis/MemoryProfileInfo.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/Analysis/StackSafetyAnalysis.h"
#include "llvm/Analysis/TypeMetadataUtils.h"
@@ -57,7 +56,6 @@
#include <vector>
using namespace llvm;
-using namespace llvm::memprof;
#define DEBUG_TYPE "module-summary-analysis"
@@ -277,9 +275,6 @@ static void computeFunctionSummary(
std::vector<const Instruction *> NonVolatileLoads;
std::vector<const Instruction *> NonVolatileStores;
- std::vector<CallsiteInfo> Callsites;
- std::vector<AllocInfo> Allocs;
-
bool HasInlineAsmMaybeReferencingInternal = false;
bool HasIndirBranchToBlockAddress = false;
bool HasUnknownCall = false;
@@ -422,57 +417,6 @@ static void computeFunctionSummary(
CallGraphEdges[Index.getOrInsertValueInfo(Candidate.Value)]
.updateHotness(getHotness(Candidate.Count, PSI));
}
-
- // TODO: Skip indirect calls for now. Need to handle these better, likely
- // by creating multiple Callsites, one per target, then speculatively
- // devirtualize while applying clone info in the ThinLTO backends. This
- // will also be important because we will have a different set of clone
- // versions per target. This handling needs to match that in the ThinLTO
- // backend so we handle things consistently for matching of callsite
- // summaries to instructions.
- if (!CalledFunction)
- continue;
-
- // Compute the list of stack ids first (so we can trim them from the stack
- // ids on any MIBs).
- CallStack<MDNode, MDNode::op_iterator> InstCallsite(
- I.getMetadata(LLVMContext::MD_callsite));
- auto *MemProfMD = I.getMetadata(LLVMContext::MD_memprof);
- if (MemProfMD) {
- std::vector<MIBInfo> MIBs;
- for (auto &MDOp : MemProfMD->operands()) {
- auto *MIBMD = cast<const MDNode>(MDOp);
- MDNode *StackNode = getMIBStackNode(MIBMD);
- assert(StackNode);
- SmallVector<unsigned> StackIdIndices;
- CallStack<MDNode, MDNode::op_iterator> StackContext(StackNode);
- // Collapse out any on the allocation call (inlining).
- for (auto ContextIter =
- StackContext.beginAfterSharedPrefix(InstCallsite);
- ContextIter != StackContext.end(); ++ContextIter) {
- unsigned StackIdIdx = Index.addOrGetStackIdIndex(*ContextIter);
- // If this is a direct recursion, simply skip the duplicate
- // entries. If this is mutual recursion, handling is left to
- // the LTO link analysis client.
- if (StackIdIndices.empty() || StackIdIndices.back() != StackIdIdx)
- StackIdIndices.push_back(StackIdIdx);
- }
- MIBs.push_back(
- MIBInfo(getMIBAllocType(MIBMD), std::move(StackIdIndices)));
- }
- Allocs.push_back(AllocInfo(std::move(MIBs)));
- } else if (!InstCallsite.empty()) {
- SmallVector<unsigned> StackIdIndices;
- for (auto StackId : InstCallsite)
- StackIdIndices.push_back(Index.addOrGetStackIdIndex(StackId));
- // Use the original CalledValue, in case it was an alias. We want
- // to record the call edge to the alias in that case. Eventually
- // an alias summary will be created to associate the alias and
- // aliasee.
- auto CalleeValueInfo =
- Index.getOrInsertValueInfo(cast<GlobalValue>(CalledValue));
- Callsites.push_back({CalleeValueInfo, StackIdIndices});
- }
}
}
Index.addBlockCount(F.size());
@@ -564,8 +508,7 @@ static void computeFunctionSummary(
CallGraphEdges.takeVector(), TypeTests.takeVector(),
TypeTestAssumeVCalls.takeVector(), TypeCheckedLoadVCalls.takeVector(),
TypeTestAssumeConstVCalls.takeVector(),
- TypeCheckedLoadConstVCalls.takeVector(), std::move(ParamAccesses),
- std::move(Callsites), std::move(Allocs));
+ TypeCheckedLoadConstVCalls.takeVector(), std::move(ParamAccesses));
if (NonRenamableLocal)
CantBePromoted.insert(F.getGUID());
Index.addGlobalValueSummary(F, std::move(FuncSummary));
@@ -814,8 +757,7 @@ ModuleSummaryIndex llvm::buildModuleSummaryIndex(
ArrayRef<FunctionSummary::VFuncId>{},
ArrayRef<FunctionSummary::ConstVCall>{},
ArrayRef<FunctionSummary::ConstVCall>{},
- ArrayRef<FunctionSummary::ParamAccess>{},
- ArrayRef<CallsiteInfo>{}, ArrayRef<AllocInfo>{});
+ ArrayRef<FunctionSummary::ParamAccess>{});
Index.addGlobalValueSummary(*GV, std::move(Summary));
} else {
std::unique_ptr<GlobalVarSummary> Summary =