summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2015-12-09 20:33:52 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2015-12-09 20:33:52 +0000
commit9abfb0b4291e47bea6e8dd267d155003a323b070 (patch)
tree11ecea8588a6cd4074813b2cd4e0c2242fd94207 /llvm/lib/Transforms/Utils/InlineFunction.cpp
parent1f8fd888735ed94f796d3f16e192471813207371 (diff)
downloadbcm5719-llvm-9abfb0b4291e47bea6e8dd267d155003a323b070.tar.gz
bcm5719-llvm-9abfb0b4291e47bea6e8dd267d155003a323b070.zip
Use WeakVH to keep track of calls with operand bundles in CloneCodeInfo
`CloneAndPruneIntoFromInst` can DCE instructions after cloning them into the new function, and so an AssertingVH is too strong. This change switches CloneCodeInfo to use a std::vector<WeakVH>. llvm-svn: 255148
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/InlineFunction.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index 52bde6797db..9a0aabc38a5 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -1162,7 +1162,9 @@ bool llvm::InlineFunction(CallSite CS, InlineFunctionInfo &IFI,
SmallVector<OperandBundleDef, 2> OpDefs;
for (auto &VH : InlinedFunctionInfo.OperandBundleCallSites) {
- Instruction *I = VH;
+ if (!VH) continue; // instruction was DCE'd after being cloned
+
+ Instruction *I = cast<Instruction>(VH);
OpDefs.clear();
OpenPOWER on IntegriCloud