[IRSim] Strip out the findSimilarity call from the constructor

Both doInitialize and runOnModule were running the entire analysis
due to the actual work being done in the constructor. Strip it out here
and only get the similarity during runOnModule.

Author: lanza
Reviewers: AndrewLitteken, paquette, plofti

Differential Revision: https://reviews.llvm.org/D92524
This commit is contained in:
Andrew Litteken 2021-06-11 18:15:29 -05:00
parent 635b72136e
commit f6dea2e732
2 changed files with 5 additions and 10 deletions

View File

@ -654,12 +654,6 @@ public:
IRSimilarityIdentifier()
: Mapper(&InstDataAllocator, &InstDataListAllocator) {}
/// \param M the module to find similarity in.
explicit IRSimilarityIdentifier(Module &M)
: Mapper(&InstDataAllocator, &InstDataListAllocator) {
findSimilarity(M);
}
private:
/// Map the instructions in the module to unsigned integers, using mapping
/// already present in the Mapper if possible.

View File

@ -891,7 +891,7 @@ IRSimilarityIdentifierWrapperPass::IRSimilarityIdentifierWrapperPass()
}
bool IRSimilarityIdentifierWrapperPass::doInitialization(Module &M) {
IRSI.reset(new IRSimilarityIdentifier(M));
IRSI.reset(new IRSimilarityIdentifier());
return false;
}
@ -901,8 +901,7 @@ bool IRSimilarityIdentifierWrapperPass::doFinalization(Module &M) {
}
bool IRSimilarityIdentifierWrapperPass::runOnModule(Module &M) {
// All the real work is done in the constructor for the pass.
IRSI.reset(new IRSimilarityIdentifier(M));
IRSI->findSimilarity(M);
return false;
}
@ -910,7 +909,9 @@ AnalysisKey IRSimilarityAnalysis::Key;
IRSimilarityIdentifier IRSimilarityAnalysis::run(Module &M,
ModuleAnalysisManager &) {
return IRSimilarityIdentifier(M);
auto IRSI = IRSimilarityIdentifier();
IRSI.findSimilarity(M);
return IRSI;
}
PreservedAnalyses