diff --git a/llvm/lib/Transforms/IPO/AlwaysInliner.cpp b/llvm/lib/Transforms/IPO/AlwaysInliner.cpp --- a/llvm/lib/Transforms/IPO/AlwaysInliner.cpp +++ b/llvm/lib/Transforms/IPO/AlwaysInliner.cpp @@ -80,13 +80,18 @@ InlineFunctionInfo IFI( /*cg=*/nullptr, GetAssumptionCache, &PSI, - &FAM.getResult(*(CB->getCaller())), + &FAM.getResult(*Caller), &FAM.getResult(F)); InlineResult Res = InlineFunction( *CB, IFI, &FAM.getResult(F), InsertLifetime); - assert(Res.isSuccess() && "unexpected failure to inline"); - (void)Res; + if (!Res.isSuccess()) { + llvm::errs() << "Unable to inline " << F.getName() << " at " + << Caller->getName() << ": " << Res.getFailureReason() + << "\n"; + assert(false && "unexpected failure to inline"); + continue; + } // Merge the attributes based on the inlining. AttributeFuncs::mergeAttributesForInlining(*Caller, F);