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);