@@ -828,12 +828,13 @@ static void removeCallsiteMetadata(CallBase *Call) {
828828}
829829
830830static void updateMemprofMetadata (CallBase *CI,
831- const std::vector<Metadata *> &MIBList) {
831+ const std::vector<Metadata *> &MIBList,
832+ OptimizationRemarkEmitter *ORE) {
832833 assert (!MIBList.empty ());
833834 // Remove existing memprof, which will either be replaced or may not be needed
834835 // if we are able to use a single allocation type function attribute.
835836 removeMemProfMetadata (CI);
836- CallStackTrie CallStack;
837+ CallStackTrie CallStack (ORE) ;
837838 for (Metadata *MIB : MIBList)
838839 CallStack.addCallStack (cast<MDNode>(MIB));
839840 bool MemprofMDAttached = CallStack.buildAndAttachMIBMetadata (CI);
@@ -848,7 +849,8 @@ static void updateMemprofMetadata(CallBase *CI,
848849// the call that was inlined.
849850static void propagateMemProfHelper (const CallBase *OrigCall,
850851 CallBase *ClonedCall,
851- MDNode *InlinedCallsiteMD) {
852+ MDNode *InlinedCallsiteMD,
853+ OptimizationRemarkEmitter *ORE) {
852854 MDNode *OrigCallsiteMD = ClonedCall->getMetadata (LLVMContext::MD_callsite);
853855 MDNode *ClonedCallsiteMD = nullptr ;
854856 // Check if the call originally had callsite metadata, and update it for the
@@ -891,7 +893,7 @@ static void propagateMemProfHelper(const CallBase *OrigCall,
891893 return ;
892894 }
893895 if (NewMIBList.size () < OrigMemProfMD->getNumOperands ())
894- updateMemprofMetadata (ClonedCall, NewMIBList);
896+ updateMemprofMetadata (ClonedCall, NewMIBList, ORE );
895897}
896898
897899// Update memprof related metadata (!memprof and !callsite) based on the
@@ -902,7 +904,8 @@ static void propagateMemProfHelper(const CallBase *OrigCall,
902904static void
903905propagateMemProfMetadata (Function *Callee, CallBase &CB,
904906 bool ContainsMemProfMetadata,
905- const ValueMap<const Value *, WeakTrackingVH> &VMap) {
907+ const ValueMap<const Value *, WeakTrackingVH> &VMap,
908+ OptimizationRemarkEmitter *ORE) {
906909 MDNode *CallsiteMD = CB.getMetadata (LLVMContext::MD_callsite);
907910 // Only need to update if the inlined callsite had callsite metadata, or if
908911 // there was any memprof metadata inlined.
@@ -925,7 +928,7 @@ propagateMemProfMetadata(Function *Callee, CallBase &CB,
925928 removeCallsiteMetadata (ClonedCall);
926929 continue ;
927930 }
928- propagateMemProfHelper (OrigCall, ClonedCall, CallsiteMD);
931+ propagateMemProfHelper (OrigCall, ClonedCall, CallsiteMD, ORE );
929932 }
930933}
931934
@@ -2473,7 +2476,8 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI,
24732476 bool MergeAttributes,
24742477 AAResults *CalleeAAR,
24752478 bool InsertLifetime,
2476- Function *ForwardVarArgsTo) {
2479+ Function *ForwardVarArgsTo,
2480+ OptimizationRemarkEmitter *ORE) {
24772481 assert (CB.getParent () && CB.getFunction () && " Instruction not in function!" );
24782482
24792483 // FIXME: we don't inline callbr yet.
@@ -2807,8 +2811,8 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI,
28072811 // inlined function which use the same param.
28082812 AddParamAndFnBasicAttributes (CB, VMap, InlinedFunctionInfo);
28092813
2810- propagateMemProfMetadata (CalledFunc, CB,
2811- InlinedFunctionInfo.ContainsMemProfMetadata , VMap);
2814+ propagateMemProfMetadata (
2815+ CalledFunc, CB, InlinedFunctionInfo.ContainsMemProfMetadata , VMap, ORE );
28122816
28132817 // Propagate metadata on the callsite if necessary.
28142818 PropagateCallSiteMetadata (CB, FirstNewBlock, Caller->end ());
0 commit comments