diff --git a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp --- a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp +++ b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp @@ -89,6 +89,8 @@ STATISTIC(NumByValArgsPromoted, "Number of byval arguments promoted"); STATISTIC(NumArgumentsDead, "Number of dead pointer args eliminated"); +namespace { + struct ArgPart { Type *Ty; Align Alignment; @@ -96,8 +98,11 @@ /// metadata transfer. LoadInst *MustExecLoad; }; + using OffsetAndArgPart = std::pair; +} // end anonymous namespace + static Value *createByteGEP(IRBuilderBase &IRB, const DataLayout &DL, Value *Ptr, Type *ResElemTy, int64_t Offset) { // For non-opaque pointers, try to create a "nice" GEP if possible, otherwise