diff options
author | Arthur Eubanks <aeubanks@google.com> | 2020-11-23 13:20:21 -0800 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2020-11-23 13:21:05 -0800 |
commit | 6a2799cf8ecf1b649cfa511aec64256a01f79436 (patch) | |
tree | 7a5c6165637c5de231145c196f28d53140930826 /llvm/lib/Analysis/CGSCCPassManager.cpp | |
parent | 6f792041a5cb964b4099614952a54c4961bfb872 (diff) | |
download | llvm-6a2799cf8ecf1b649cfa511aec64256a01f79436.zip llvm-6a2799cf8ecf1b649cfa511aec64256a01f79436.tar.gz llvm-6a2799cf8ecf1b649cfa511aec64256a01f79436.tar.bz2 |
Revert "[CGSCC] Detect devirtualization in more cases"
This reverts commit 14a68b4aa9732293ad7e16f105b0feb53dc8dbe2.
Causes building self hosted clang to crash when using NPM.
Diffstat (limited to 'llvm/lib/Analysis/CGSCCPassManager.cpp')
-rw-r--r-- | llvm/lib/Analysis/CGSCCPassManager.cpp | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp index 95d2ebf..627ad03 100644 --- a/llvm/lib/Analysis/CGSCCPassManager.cpp +++ b/llvm/lib/Analysis/CGSCCPassManager.cpp @@ -20,7 +20,6 @@ #include "llvm/IR/Instruction.h" #include "llvm/IR/PassManager.h" #include "llvm/IR/PassManagerImpl.h" -#include "llvm/IR/ValueHandle.h" #include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" @@ -477,9 +476,9 @@ static LazyCallGraph::SCC &updateCGAndAnalysisManagerForPass( // First walk the function and handle all called functions. We do this first // because if there is a single call edge, whether there are ref edges is // irrelevant. - for (Instruction &I : instructions(F)) { - if (auto *CB = dyn_cast<CallBase>(&I)) { - if (Function *Callee = CB->getCalledFunction()) { + for (Instruction &I : instructions(F)) + if (auto *CB = dyn_cast<CallBase>(&I)) + if (Function *Callee = CB->getCalledFunction()) if (Visited.insert(Callee).second && !Callee->isDeclaration()) { Node *CalleeN = G.lookup(*Callee); if (!CalleeN) { @@ -499,17 +498,6 @@ static LazyCallGraph::SCC &updateCGAndAnalysisManagerForPass( else if (!E->isCall()) PromotedRefTargets.insert(CalleeN); } - } else { - // We can miss devirtualization if an indirect call is created then - // promoted before updateCGAndAnalysisManagerForPass runs. - auto *Entry = UR.IndirectVHs.find(CB); - if (Entry == UR.IndirectVHs.end()) - UR.IndirectVHs.insert({CB, WeakTrackingVH(CB)}); - else if (!Entry->second) - Entry->second = WeakTrackingVH(CB); - } - } - } // Now walk all references. for (Instruction &I : instructions(F)) |