diff options
Diffstat (limited to 'lib/Linker/IRMover.cpp')
-rw-r--r-- | lib/Linker/IRMover.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/Linker/IRMover.cpp b/lib/Linker/IRMover.cpp index 12ceaa2d322..6def096ccd7 100644 --- a/lib/Linker/IRMover.cpp +++ b/lib/Linker/IRMover.cpp @@ -805,18 +805,17 @@ IRLinker::linkAppendingVarProto(GlobalVariable *DstGV, SmallVector<Constant *, 16> SrcElements; getArrayElements(SrcGV->getInitializer(), SrcElements); - if (IsNewStructor) - SrcElements.erase( - remove_if(SrcElements, - [this](Constant *E) { - auto *Key = dyn_cast<GlobalValue>( - E->getAggregateElement(2)->stripPointerCasts()); - if (!Key) - return false; - GlobalValue *DGV = getLinkedToGlobal(Key); - return !shouldLink(DGV, *Key); - }), - SrcElements.end()); + if (IsNewStructor) { + auto It = remove_if(SrcElements, [this](Constant *E) { + auto *Key = + dyn_cast<GlobalValue>(E->getAggregateElement(2)->stripPointerCasts()); + if (!Key) + return false; + GlobalValue *DGV = getLinkedToGlobal(Key); + return !shouldLink(DGV, *Key); + }); + SrcElements.erase(It, SrcElements.end()); + } uint64_t NewSize = DstNumElements + SrcElements.size(); ArrayType *NewType = ArrayType::get(EltTy, NewSize); |