[llvm] 48ca6da - Revert "[CSSPGO] Factor out common part for CSSPGO inline and AFDO inline"

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 4 10:17:43 PST 2021


On Thu, Feb 4, 2021 at 1:15 AM Adrian Kuegel <akuegel at google.com> wrote:

> Or at least it was my intention to comment on that change. Looking back,
> it seems my comment never made it, I guess I didn't press some button or
> something? I am not very familiar with Phabricator.
> I hope it didn't cause too much trouble to figure out why the revert was
> needed? At least all the bots with asserts enabled should have been
> complaining :)
>

No big deal for any specific instance - mostly making a point about "next
time"/in general. (tracking down buildbots - especially as their logs
timeout/get cleaned up/etc can be non-trivial, FWIW)

- Dave


>
> On Thu, Feb 4, 2021 at 9:54 AM Adrian Kuegel <akuegel at google.com> wrote:
>
>> Sorry, forgot to do this in the commit message of the reverts. But I
>> commented on the change I reverted that the tests are failing with asserts
>> enabled.
>>
>> On Wed, Feb 3, 2021 at 8:01 PM David Blaikie <dblaikie at gmail.com> wrote:
>>
>>> Please include information about why a patch is being reverted (eg:
>>> buildbot links and quotes from buildbot logs) in the commit message -
>>> handy for archaeology (seeing that someone else attempted a change and
>>> why it couldn't be done that way) and if someone is wondering if the
>>> failure they're seeing would be addressed by this patch.
>>>
>>> On Tue, Feb 2, 2021 at 2:51 AM Adrian Kuegel via llvm-commits
>>> <llvm-commits at lists.llvm.org> wrote:
>>> >
>>> >
>>> > Author: Adrian Kuegel
>>> > Date: 2021-02-02T11:51:04+01:00
>>> > New Revision: 48ca6da9d2f534752f5a5263a6209257149dba7d
>>> >
>>> > URL:
>>> https://github.com/llvm/llvm-project/commit/48ca6da9d2f534752f5a5263a6209257149dba7d
>>> > DIFF:
>>> https://github.com/llvm/llvm-project/commit/48ca6da9d2f534752f5a5263a6209257149dba7d.diff
>>> >
>>> > LOG: Revert "[CSSPGO] Factor out common part for CSSPGO inline and
>>> AFDO inline"
>>> >
>>> > This reverts commit 9a03058d6322edb8abc803ba3e436cc62647d979.
>>> >
>>> > Added:
>>> >
>>> >
>>> > Modified:
>>> >     llvm/lib/Transforms/IPO/SampleProfile.cpp
>>> >     llvm/test/Transforms/SampleProfile/pseudo-probe-inline.ll
>>> >     llvm/test/Transforms/SampleProfile/remarks.ll
>>> >
>>> > Removed:
>>> >
>>> >
>>> >
>>> >
>>> ################################################################################
>>> > diff  --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp
>>> b/llvm/lib/Transforms/IPO/SampleProfile.cpp
>>> > index 7865426dff16..665c4078f3ee 100644
>>> > --- a/llvm/lib/Transforms/IPO/SampleProfile.cpp
>>> > +++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp
>>> > @@ -416,18 +416,20 @@ class SampleProfileLoader {
>>> >    findIndirectCallFunctionSamples(const Instruction &I, uint64_t
>>> &Sum) const;
>>> >    mutable DenseMap<const DILocation *, const FunctionSamples *>
>>> DILocation2SampleMap;
>>> >    const FunctionSamples *findFunctionSamples(const Instruction &I)
>>> const;
>>> > -  // Attempt to promote indirect call and also inline the promoted
>>> call
>>> > -  bool tryPromoteAndInlineCandidate(
>>> > -      Function &F, InlineCandidate &Candidate, uint64_t &Sum,
>>> > -      DenseSet<Instruction *> &PromotedInsns,
>>> > -      SmallVector<CallBase *, 8> *InlinedCallSites = nullptr);
>>> > +  CallBase *tryPromoteIndirectCall(Function &F, StringRef CalleeName,
>>> > +                                   uint64_t &Sum, uint64_t Count,
>>> CallBase *I,
>>> > +                                   const char *&Reason);
>>> > +  bool inlineCallInstruction(CallBase &CB,
>>> > +                             const FunctionSamples *CalleeSamples);
>>> >    bool inlineHotFunctions(Function &F,
>>> >                            DenseSet<GlobalValue::GUID> &InlinedGUIDs);
>>> > +  // Helper functions call-site prioritized BFS inliner
>>> > +  // Will change the main FDO inliner to be work list based directly
>>> in
>>> > +  // upstream, then merge this change with that and remove the
>>> duplication.
>>> >    InlineCost shouldInlineCandidate(InlineCandidate &Candidate);
>>> >    bool getInlineCandidate(InlineCandidate *NewCandidate, CallBase
>>> *CB);
>>> > -  bool
>>> > -  tryInlineCandidate(InlineCandidate &Candidate,
>>> > -                     SmallVector<CallBase *, 8> *InlinedCallSites =
>>> nullptr);
>>> > +  bool tryInlineCandidate(InlineCandidate &Candidate,
>>> > +                          SmallVector<CallBase *, 8>
>>> &InlinedCallSites);
>>> >    bool
>>> >    inlineHotFunctionsWithPriority(Function &F,
>>> >                                   DenseSet<GlobalValue::GUID>
>>> &InlinedGUIDs);
>>> > @@ -1075,45 +1077,70 @@ SampleProfileLoader::findFunctionSamples(const
>>> Instruction &Inst) const {
>>> >    return it.first->second;
>>> >  }
>>> >
>>> > -/// Attempt to promote indirect call and also inline the promoted
>>> call.
>>> > -///
>>> > -/// \param F  Caller function.
>>> > -/// \param Candidate  ICP and inline candidate.
>>> > -/// \param Sum  Sum of target counts for indirect call.
>>> > -/// \param PromotedInsns  Map to keep track of indirect call already
>>> processed.
>>> > -/// \param Candidate  ICP and inline candidate.
>>> > -/// \param InlinedCallSite  Output vector for new call sites exposed
>>> after
>>> > -/// inlining.
>>> > -bool SampleProfileLoader::tryPromoteAndInlineCandidate(
>>> > -    Function &F, InlineCandidate &Candidate, uint64_t &Sum,
>>> > -    DenseSet<Instruction *> &PromotedInsns,
>>> > -    SmallVector<CallBase *, 8> *InlinedCallSite) {
>>> > -  const char *Reason = "Callee function not available";
>>> > +CallBase *
>>> > +SampleProfileLoader::tryPromoteIndirectCall(Function &F, StringRef
>>> CalleeName,
>>> > +                                            uint64_t &Sum, uint64_t
>>> Count,
>>> > +                                            CallBase *I, const char
>>> *&Reason) {
>>> > +  Reason = "Callee function not available";
>>> >    // R->getValue() != &F is to prevent promoting a recursive call.
>>> >    // If it is a recursive call, we do not inline it as it could bloat
>>> >    // the code exponentially. There is way to better handle this, e.g.
>>> >    // clone the caller first, and inline the cloned caller if it is
>>> >    // recursive. As llvm does not inline recursive calls, we will
>>> >    // simply ignore it instead of handling it explicitly.
>>> > -  auto R = SymbolMap.find(Candidate.CalleeSamples->getFuncName());
>>> > +  auto R = SymbolMap.find(CalleeName);
>>> >    if (R != SymbolMap.end() && R->getValue() &&
>>> >        !R->getValue()->isDeclaration() &&
>>> R->getValue()->getSubprogram() &&
>>> >        R->getValue()->hasFnAttribute("use-sample-profile") &&
>>> > -      R->getValue() != &F &&
>>> > -      isLegalToPromote(*Candidate.CallInstr, R->getValue(), &Reason))
>>> {
>>> > +      R->getValue() != &F && isLegalToPromote(*I, R->getValue(),
>>> &Reason)) {
>>> >      auto *DI =
>>> > -        &pgo::promoteIndirectCall(*Candidate.CallInstr, R->getValue(),
>>> > -                                  Candidate.CallsiteCount, Sum,
>>> false, ORE);
>>> > -    if (DI) {
>>> > -      Sum -= Candidate.CallsiteCount;
>>> > -      PromotedInsns.insert(Candidate.CallInstr);
>>> > -      Candidate.CallInstr = DI;
>>> > -      if (isa<CallInst>(DI) || isa<InvokeInst>(DI))
>>> > -        return tryInlineCandidate(Candidate, InlinedCallSite);
>>> > +        &pgo::promoteIndirectCall(*I, R->getValue(), Count, Sum,
>>> false, ORE);
>>> > +    Sum -= Count;
>>> > +    return DI;
>>> > +  }
>>> > +  return nullptr;
>>> > +}
>>> > +
>>> > +bool SampleProfileLoader::inlineCallInstruction(
>>> > +    CallBase &CB, const FunctionSamples *CalleeSamples) {
>>> > +  if (ExternalInlineAdvisor) {
>>> > +    auto Advice = ExternalInlineAdvisor->getAdvice(CB);
>>> > +    if (!Advice->isInliningRecommended()) {
>>> > +      Advice->recordUnattemptedInlining();
>>> > +      return false;
>>> >      }
>>> > -  } else {
>>> > -    LLVM_DEBUG(dbgs() << "\nFailed to promote indirect call to "
>>> > -                      << CalleeFunctionName << " because " << Reason
>>> << "\n");
>>> > +    // Dummy record, we don't use it for replay.
>>> > +    Advice->recordInlining();
>>> > +  }
>>> > +
>>> > +  Function *CalledFunction = CB.getCalledFunction();
>>> > +  assert(CalledFunction);
>>> > +  DebugLoc DLoc = CB.getDebugLoc();
>>> > +  BasicBlock *BB = CB.getParent();
>>> > +  InlineParams Params = getInlineParams();
>>> > +  Params.ComputeFullInlineCost = true;
>>> > +  // Checks if there is anything in the reachable portion of the
>>> callee at
>>> > +  // this callsite that makes this inlining potentially illegal. Need
>>> to
>>> > +  // set ComputeFullInlineCost, otherwise getInlineCost may return
>>> early
>>> > +  // when cost exceeds threshold without checking all IRs in the
>>> callee.
>>> > +  // The acutal cost does not matter because we only checks isNever()
>>> to
>>> > +  // see if it is legal to inline the callsite.
>>> > +  InlineCost Cost =
>>> > +      getInlineCost(CB, Params, GetTTI(*CalledFunction), GetAC,
>>> GetTLI);
>>> > +  if (Cost.isNever()) {
>>> > +    ORE->emit(OptimizationRemarkAnalysis(CSINLINE_DEBUG,
>>> "InlineFail", DLoc, BB)
>>> > +              << "incompatible inlining");
>>> > +    return false;
>>> > +  }
>>> > +  InlineFunctionInfo IFI(nullptr, GetAC);
>>> > +  if (InlineFunction(CB, IFI).isSuccess()) {
>>> > +    // The call to InlineFunction erases I, so we can't pass it here.
>>> > +    emitInlinedInto(*ORE, DLoc, BB, *CalledFunction,
>>> *BB->getParent(), Cost,
>>> > +                    true, CSINLINE_DEBUG);
>>> > +    if (ProfileIsCS)
>>> > +      ContextTracker->markContextSamplesInlined(CalleeSamples);
>>> > +    ++NumCSInlined;
>>> > +    return true;
>>> >    }
>>> >    return false;
>>> >  }
>>> > @@ -1179,11 +1206,10 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >           "ProfAccForSymsInList should be false when
>>> profile-sample-accurate "
>>> >           "is enabled");
>>> >
>>> > -  DenseMap<CallBase *, const FunctionSamples *>
>>> LocalNotInlinedCallSites;
>>> > +  DenseMap<CallBase *, const FunctionSamples *>
>>> localNotInlinedCallSites;
>>> >    bool Changed = false;
>>> > -  bool LocalChanged = true;
>>> > -  while (LocalChanged) {
>>> > -    LocalChanged = false;
>>> > +  while (true) {
>>> > +    bool LocalChanged = false;
>>> >      SmallVector<CallBase *, 10> CIS;
>>> >      for (auto &BB : F) {
>>> >        bool Hot = false;
>>> > @@ -1197,7 +1223,7 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >                     "GUIDToFuncNameMap has to be populated");
>>> >              AllCandidates.push_back(CB);
>>> >              if (FS->getEntrySamples() > 0 || ProfileIsCS)
>>> > -              LocalNotInlinedCallSites.try_emplace(CB, FS);
>>> > +              localNotInlinedCallSites.try_emplace(CB, FS);
>>> >              if (callsiteIsHot(FS, PSI))
>>> >                Hot = true;
>>> >              else if (shouldInlineColdCallee(*CB))
>>> > @@ -1215,11 +1241,6 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >      }
>>> >      for (CallBase *I : CIS) {
>>> >        Function *CalledFunction = I->getCalledFunction();
>>> > -      InlineCandidate Candidate = {I,
>>> > -                                   LocalNotInlinedCallSites.count(I)
>>> > -                                       ? LocalNotInlinedCallSites[I]
>>> > -                                       : nullptr,
>>> > -                                   0 /* dummy count */};
>>> >        // Do not inline recursive calls.
>>> >        if (CalledFunction == &F)
>>> >          continue;
>>> > @@ -1236,16 +1257,30 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >            if (!callsiteIsHot(FS, PSI))
>>> >              continue;
>>> >
>>> > -          Candidate = {I, FS, FS->getEntrySamples()};
>>> > -          if (tryPromoteAndInlineCandidate(F, Candidate, Sum,
>>> PromotedInsns)) {
>>> > -            LocalNotInlinedCallSites.erase(I);
>>> > -            LocalChanged = true;
>>> > +          const char *Reason = nullptr;
>>> > +          auto CalleeFunctionName = FS->getFuncName();
>>> > +          if (CallBase *DI =
>>> > +                  tryPromoteIndirectCall(F, CalleeFunctionName, Sum,
>>> > +                                         FS->getEntrySamples(), I,
>>> Reason)) {
>>> > +            PromotedInsns.insert(I);
>>> > +            // If profile mismatches, we should not attempt to inline
>>> DI.
>>> > +            if ((isa<CallInst>(DI) || isa<InvokeInst>(DI)) &&
>>> > +                inlineCallInstruction(cast<CallBase>(*DI), FS)) {
>>> > +              localNotInlinedCallSites.erase(I);
>>> > +              LocalChanged = true;
>>> > +            }
>>> > +          } else {
>>> > +            LLVM_DEBUG(dbgs()
>>> > +                       << "\nFailed to promote indirect call to "
>>> > +                       << CalleeFunctionName << " because " << Reason
>>> << "\n");
>>> >            }
>>> >          }
>>> >        } else if (CalledFunction && CalledFunction->getSubprogram() &&
>>> >                   !CalledFunction->isDeclaration()) {
>>> > -        if (tryInlineCandidate(Candidate)) {
>>> > -          LocalNotInlinedCallSites.erase(I);
>>> > +        if (inlineCallInstruction(*I,
>>> localNotInlinedCallSites.count(I)
>>> > +                                          ?
>>> localNotInlinedCallSites[I]
>>> > +                                          : nullptr)) {
>>> > +          localNotInlinedCallSites.erase(I);
>>> >            LocalChanged = true;
>>> >          }
>>> >        } else if (LTOPhase == ThinOrFullLTOPhase::ThinLTOPreLink) {
>>> > @@ -1253,7 +1288,11 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >              InlinedGUIDs, F.getParent(),
>>> PSI->getOrCompHotCountThreshold());
>>> >        }
>>> >      }
>>> > -    Changed |= LocalChanged;
>>> > +    if (LocalChanged) {
>>> > +      Changed = true;
>>> > +    } else {
>>> > +      break;
>>> > +    }
>>> >    }
>>> >
>>> >    // For CS profile, profile for not inlined context will be merged
>>> when
>>> > @@ -1262,7 +1301,7 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >      return Changed;
>>> >
>>> >    // Accumulate not inlined callsite information into
>>> notInlinedSamples
>>> > -  for (const auto &Pair : LocalNotInlinedCallSites) {
>>> > +  for (const auto &Pair : localNotInlinedCallSites) {
>>> >      CallBase *I = Pair.getFirst();
>>> >      Function *Callee = I->getCalledFunction();
>>> >      if (!Callee || Callee->isDeclaration())
>>> > @@ -1308,7 +1347,7 @@ bool SampleProfileLoader::inlineHotFunctions(
>>> >  }
>>> >
>>> >  bool SampleProfileLoader::tryInlineCandidate(
>>> > -    InlineCandidate &Candidate, SmallVector<CallBase *, 8>
>>> *InlinedCallSites) {
>>> > +    InlineCandidate &Candidate, SmallVector<CallBase *, 8>
>>> &InlinedCallSites) {
>>> >
>>> >    CallBase &CB = *Candidate.CallInstr;
>>> >    Function *CalledFunction = CB.getCalledFunction();
>>> > @@ -1333,11 +1372,9 @@ bool SampleProfileLoader::tryInlineCandidate(
>>> >                      true, CSINLINE_DEBUG);
>>> >
>>> >      // Now populate the list of newly exposed call sites.
>>> > -    if (InlinedCallSites) {
>>> > -      InlinedCallSites->clear();
>>> > -      for (auto &I : IFI.InlinedCallSites)
>>> > -        InlinedCallSites->push_back(I);
>>> > -    }
>>> > +    InlinedCallSites.clear();
>>> > +    for (auto &I : IFI.InlinedCallSites)
>>> > +      InlinedCallSites.push_back(I);
>>> >
>>> >      if (ProfileIsCS)
>>> >
>>> ContextTracker->markContextSamplesInlined(Candidate.CalleeSamples);
>>> > @@ -1409,16 +1446,18 @@
>>> SampleProfileLoader::shouldInlineCandidate(InlineCandidate &Candidate) {
>>> >    InlineCost Cost = getInlineCost(*Candidate.CallInstr, Callee,
>>> Params,
>>> >                                    GetTTI(*Callee), GetAC, GetTLI);
>>> >
>>> > -  // Honor always inline and never inline from call analyzer
>>> > -  if (Cost.isNever() || Cost.isAlways())
>>> > -    return Cost;
>>> > -
>>> >    // For old FDO inliner, we inline the call site as long as cost is
>>> not
>>> >    // "Never". The cost-benefit check is done earlier.
>>> >    if (!CallsitePrioritizedInline) {
>>> > -    return InlineCost::get(Cost.getCost(), INT_MAX);
>>> > +    if (Cost.isNever())
>>> > +      return Cost;
>>> > +    return InlineCost::getAlways("hot callsite previously inlined");
>>> >    }
>>> >
>>> > +  // Honor always inline and never inline from call analyzer
>>> > +  if (Cost.isNever() || Cost.isAlways())
>>> > +    return Cost;
>>> > +
>>> >    // Otherwise only use the cost from call analyzer, but overwite
>>> threshold with
>>> >    // Sample PGO threshold.
>>> >    return InlineCost::get(Cost.getCost(), SampleThreshold);
>>> > @@ -1503,23 +1542,34 @@ bool
>>> SampleProfileLoader::inlineHotFunctionsWithPriority(
>>> >          // fixed, but we generate
>>> > diff erent types).
>>> >          if (!PSI->isHotCount(EntryCountDistributed))
>>> >            break;
>>> > -        SmallVector<CallBase *, 8> InlinedCallSites;
>>> > -        // Attach function profile for promoted indirect callee, and
>>> update
>>> > -        // call site count for the promoted inline candidate too.
>>> > -        Candidate = {I, FS, EntryCountDistributed};
>>> > -        if (tryPromoteAndInlineCandidate(F, Candidate, Sum,
>>> PromotedInsns,
>>> > -                                         &InlinedCallSites)) {
>>> > -          for (auto *CB : InlinedCallSites) {
>>> > -            if (getInlineCandidate(&NewCandidate, CB))
>>> > -              CQueue.emplace(NewCandidate);
>>> > +        const char *Reason = nullptr;
>>> > +        auto CalleeFunctionName = FS->getFuncName();
>>> > +        if (CallBase *DI = tryPromoteIndirectCall(
>>> > +                F, CalleeFunctionName, Sum, EntryCountDistributed, I,
>>> Reason)) {
>>> > +          // Attach function profile for promoted indirect callee,
>>> and update
>>> > +          // call site count for the promoted inline candidate too.
>>> > +          Candidate = {DI, FS, EntryCountDistributed};
>>> > +          PromotedInsns.insert(I);
>>> > +          SmallVector<CallBase *, 8> InlinedCallSites;
>>> > +          // If profile mismatches, we should not attempt to inline
>>> DI.
>>> > +          if ((isa<CallInst>(DI) || isa<InvokeInst>(DI)) &&
>>> > +              tryInlineCandidate(Candidate, InlinedCallSites)) {
>>> > +            for (auto *CB : InlinedCallSites) {
>>> > +              if (getInlineCandidate(&NewCandidate, CB))
>>> > +                CQueue.emplace(NewCandidate);
>>> > +            }
>>> > +            Changed = true;
>>> >            }
>>> > -          Changed = true;
>>> > +        } else {
>>> > +          LLVM_DEBUG(dbgs()
>>> > +                     << "\nFailed to promote indirect call to "
>>> > +                     << CalleeFunctionName << " because " << Reason
>>> << "\n");
>>> >          }
>>> >        }
>>> >      } else if (CalledFunction && CalledFunction->getSubprogram() &&
>>> >                 !CalledFunction->isDeclaration()) {
>>> >        SmallVector<CallBase *, 8> InlinedCallSites;
>>> > -      if (tryInlineCandidate(Candidate, &InlinedCallSites)) {
>>> > +      if (tryInlineCandidate(Candidate, InlinedCallSites)) {
>>> >          for (auto *CB : InlinedCallSites) {
>>> >            if (getInlineCandidate(&NewCandidate, CB))
>>> >              CQueue.emplace(NewCandidate);
>>> >
>>> > diff  --git
>>> a/llvm/test/Transforms/SampleProfile/pseudo-probe-inline.ll
>>> b/llvm/test/Transforms/SampleProfile/pseudo-probe-inline.ll
>>> > index 5359fd4da067..d47359fa0b5f 100644
>>> > --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-inline.ll
>>> > +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-inline.ll
>>> > @@ -89,7 +89,7 @@ if.end:
>>> >  ;YAML-NEXT:    - String:          '(cost='
>>> >  ;YAML-NEXT:    - Cost:            '15'
>>> >  ;YAML-NEXT:    - String:          ', threshold='
>>> > -;YAML-NEXT:    - Threshold:       '2147483647 <(214)%20748-3647>'
>>> > +;YAML-NEXT:    - Threshold:       '225'
>>> >  ;YAML-NEXT:    - String:          ')'
>>> >  ;YAML-NEXT:    - String:          ' at callsite '
>>> >  ;YAML-NEXT:    - String:          foo
>>> >
>>> > diff  --git a/llvm/test/Transforms/SampleProfile/remarks.ll
>>> b/llvm/test/Transforms/SampleProfile/remarks.ll
>>> > index 46f016433b20..3add1e74abaa 100644
>>> > --- a/llvm/test/Transforms/SampleProfile/remarks.ll
>>> > +++ b/llvm/test/Transforms/SampleProfile/remarks.ll
>>> > @@ -21,7 +21,7 @@
>>> >
>>> >  ; We are expecting foo() to be inlined in main() (almost all the
>>> cycles are
>>> >  ; spent inside foo).
>>> > -; CHECK: remark: remarks.cc:13:21: _Z3foov inlined into main to match
>>> profiling context with (cost=130, threshold=2147483647
>>> <(214)%20748-3647>) at callsite main:0:21;
>>> > +; CHECK: remark: remarks.cc:13:21: _Z3foov inlined into main to match
>>> profiling context with (cost=130, threshold=225) at callsite main:0:21;
>>> >  ; CHECK: remark: remarks.cc:9:19: rand inlined into main to match
>>> profiling context with (cost=always): always inline attribute at callsite
>>> _Z3foov:6:19 @ main:0:21;
>>> >
>>> >  ; The back edge for the loop is the hottest edge in the loop subgraph.
>>> > @@ -47,7 +47,7 @@
>>> >  ;YAML-NEXT:    - String:          '(cost='
>>> >  ;YAML-NEXT:    - Cost:            '130'
>>> >  ;YAML-NEXT:    - String:          ', threshold='
>>> > -;YAML-NEXT:    - Threshold:       '2147483647 <(214)%20748-3647>'
>>> > +;YAML-NEXT:    - Threshold:       '225'
>>> >  ;YAML-NEXT:    - String:          ')'
>>> >  ;YAML-NEXT:    - String:          ' at callsite '
>>> >  ;YAML-NEXT:    - String:          main
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > llvm-commits mailing list
>>> > llvm-commits at lists.llvm.org
>>> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>>
>
> --
>
>
> Google Germany GmbH
>
> Erika-Mann-Straße 33
>
> 80636 München
>
> Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
>
> Registergericht und -nummer: Hamburg, HRB 86891
>
> Sitz der Gesellschaft: Hamburg
>
> Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind,
> leiten Sie diese bitte nicht weiter, informieren Sie den Absender und
> löschen Sie die E-Mail und alle Anhänge. Vielen Dank.
>
>
>
> This e-mail is confidential. If you are not the right addressee please do
> not forward it, please inform the sender, and please erase this e-mail
> including any attachments. Thanks.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210204/ea58a182/attachment.html>


More information about the llvm-commits mailing list