<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Thanks Galina. Since these tests broke only on the expensive-checks
    bot it seems that my patch, which replaces std::sort with
    llvm::sort, simply uncovered a bug (as was the objective of the
    patch) in the sorting order.<br>
    I suspect the problem arises from the weak sorting order in r312322:<br>
    <br>
      llvm::sort(Comparisons_.begin(), Comparisons_.end(),<br>
                [](const BCECmpBlock &a, const BCECmpBlock &b) {<br>
                  return a.Lhs() < b.Lhs();<br>
                });<br>
    <br>
    @courbet is the owner of that patch. I have cc'ed him.<br>
    @courbet: Could you please look into this?<br>
    <br>
    Thanks,<br>
    Mandeep<br>
    <br>
    <div class="moz-cite-prefix">On 4/23/2018 12:54 PM, Galina Kistanova
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAJ8eiNwzPK=FAR68pk=g7zQAiWWhEzeqix8Mc1FagWMCJmizyA@mail.gmail.com">
      <div dir="ltr">Hello Mandeep,<br>
        <br>
        It looks like this commit broke few tests on one of our
        builders:<br>
        <a
href="http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/9054"
          moz-do-not-send="true">http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/9054</a><br>
        <br>
        . . .<br>
        Failing Tests (5):<br>
            LLVM :: CodeGen/PowerPC/memcmp-mergeexpand.ll<br>
            LLVM :: CodeGen/X86/memcmp-mergeexpand.ll<br>
            LLVM :: Transforms/MergeICmps/X86/pair-int32-int32.ll<br>
            LLVM :: Transforms/MergeICmps/X86/split-block-does-work.ll<br>
            LLVM :: Transforms/MergeICmps/X86/tuple-four-int8.ll<br>
        <br>
        Please have a look?<br>
        <br>
        Thanks<br>
        <br>
        Galina<br>
        <br>
        <br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Fri, Apr 13, 2018 at 12:47 PM,
            Mandeep Singh Grang via llvm-commits <span dir="ltr"><<a
                href="mailto:llvm-commits@lists.llvm.org"
                target="_blank" moz-do-not-send="true">llvm-commits@lists.llvm.org</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">Author:
              mgrang<br>
              Date: Fri Apr 13 12:47:57 2018<br>
              New Revision: 330059<br>
              <br>
              URL: <a
                href="http://llvm.org/viewvc/llvm-project?rev=330059&view=rev"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project?rev=330059&view=rev</a><br>
              Log:<br>
              [Transforms] Change std::sort to llvm::sort in response to
              r327219<br>
              <br>
              Summary:<br>
              r327219 added wrappers to std::sort which randomly shuffle
              the container before sorting.<br>
              This will help in uncovering non-determinism caused due to
              undefined sorting<br>
              order of objects having the same key.<br>
              <br>
              To make use of that infrastructure we need to invoke
              llvm::sort instead of std::sort.<br>
              <br>
              Note: This patch is one of a series of patches to replace
              *all* std::sort to llvm::sort.<br>
              Refer the comments section in D44363 for a list of all the
              required patches.<br>
              <br>
              Reviewers: kcc, pcc, danielcdh, jmolloy, sanjoy, dberlin,
              ruiu<br>
              <br>
              Reviewed By: ruiu<br>
              <br>
              Subscribers: ruiu, llvm-commits<br>
              <br>
              Differential Revision: <a
                href="https://reviews.llvm.org/D45142" rel="noreferrer"
                target="_blank" moz-do-not-send="true">https://reviews.llvm.org/<wbr>D45142</a><br>
              <br>
              Modified:<br>
                  llvm/trunk/lib/Transforms/<wbr>Coroutines/CoroFrame.cpp<br>
                  llvm/trunk/lib/Transforms/IPO/<wbr>LowerTypeTests.cpp<br>
                  llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Instrumentation/GCOVProfiling.<wbr>cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Instrumentation/<wbr>SanitizerCoverage.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/ConstantHoisting.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/GVNHoist.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/GVNSink.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/GuardWidening.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/LoopSink.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/LoopStrengthReduce.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/MergeICmps.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/PlaceSafepoints.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/<wbr>RewriteStatepointsForGC.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/SROA.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Scalar/SimpleLoopUnswitch.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/<wbr>ImportedFunctionsInliningStati<wbr>stics.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/LowerSwitch.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/PredicateInfo.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/PromoteMemoryToRegister.<wbr>cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/SimplifyCFG.cpp<br>
                  llvm/trunk/lib/Transforms/<wbr>Utils/SplitModule.cpp<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Coroutines/CoroFrame.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Coroutines/CoroFrame.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Coroutines/<wbr>CoroFrame.cpp?rev=330059&r1=<wbr>330058&r2=330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Coroutines/CoroFrame.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Coroutines/CoroFrame.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -48,7 +48,7 @@ public:<br>
                 BlockToIndexMapping(Function &F) {<br>
                   for (BasicBlock &BB : F)<br>
                     V.push_back(&BB);<br>
              -    std::sort(V.begin(), V.end());<br>
              +    llvm::sort(V.begin(), V.end());<br>
                 }<br>
              <br>
                 size_t blockToIndex(BasicBlock *BB) const {<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/IPO/<wbr>LowerTypeTests.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/IPO/LowerTypeTests.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/IPO/<wbr>LowerTypeTests.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/IPO/<wbr>LowerTypeTests.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -1869,11 +1869,11 @@ bool LowerTypeTestsModule::lower()
              {<br>
                   }<br>
                   Sets.emplace_back(I, MaxIndex);<br>
                 }<br>
              -  std::sort(Sets.begin(), Sets.end(),<br>
              -            [](const std::pair<GlobalClassesTy::<wbr>iterator,
              unsigned> &S1,<br>
              -               const std::pair<GlobalClassesTy::<wbr>iterator,
              unsigned> &S2) {<br>
              -              return S1.second < S2.second;<br>
              -            });<br>
              +  llvm::sort(Sets.begin(), Sets.end(),<br>
              +             [](const std::pair<GlobalClassesTy::<wbr>iterator,
              unsigned> &S1,<br>
              +                const std::pair<GlobalClassesTy::<wbr>iterator,
              unsigned> &S2) {<br>
              +               return S1.second < S2.second;<br>
              +             });<br>
              <br>
                 // For each disjoint set we found...<br>
                 for (const auto &S : Sets) {<br>
              @@ -1894,7 +1894,7 @@ bool LowerTypeTestsModule::lower() {<br>
              <br>
                   // Order type identifiers by global index for
              determinism. This ordering is<br>
                   // stable as there is a one-to-one mapping between
              metadata and indices.<br>
              -    std::sort(TypeIds.begin(), TypeIds.end(),
              [&](Metadata *M1, Metadata *M2) {<br>
              +    llvm::sort(TypeIds.begin(), TypeIds.end(),
              [&](Metadata *M1, Metadata *M2) {<br>
                     return TypeIdInfo[M1].Index <
              TypeIdInfo[M2].Index;<br>
                   });<br>
              <br>
              <br>
              Modified: llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/IPO/SampleProfile.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -679,10 +679,10 @@ SampleProfileLoader::<wbr>findIndirectCallFun<br>
                     Sum += NameFS.second.getEntrySamples(<wbr>);<br>
                     R.push_back(&NameFS.second);<br>
                   }<br>
              -    std::sort(R.begin(), R.end(),<br>
              -              [](const FunctionSamples *L, const
              FunctionSamples *R) {<br>
              -                return L->getEntrySamples() >
              R->getEntrySamples();<br>
              -              });<br>
              +    llvm::sort(R.begin(), R.end(),<br>
              +               [](const FunctionSamples *L, const
              FunctionSamples *R) {<br>
              +                 return L->getEntrySamples() >
              R->getEntrySamples();<br>
              +               });<br>
                 }<br>
                 return R;<br>
               }<br>
              @@ -1170,13 +1170,13 @@ static SmallVector<<wbr>InstrProfValueData,
              2<br>
                 SmallVector<<wbr>InstrProfValueData, 2> R;<br>
                 for (auto I = M.begin(); I != M.end(); ++I)<br>
                   R.push_back({Function::<wbr>getGUID(I->getKey()),
              I->getValue()});<br>
              -  std::sort(R.begin(), R.end(),<br>
              -            [](const InstrProfValueData &L, const
              InstrProfValueData &R) {<br>
              -              if (L.Count == R.Count)<br>
              -                return L.Value > R.Value;<br>
              -              else<br>
              -                return L.Count > R.Count;<br>
              -            });<br>
              +  llvm::sort(R.begin(), R.end(),<br>
              +             [](const InstrProfValueData &L, const
              InstrProfValueData &R) {<br>
              +               if (L.Count == R.Count)<br>
              +                 return L.Value > R.Value;<br>
              +               else<br>
              +                 return L.Count > R.Count;<br>
              +             });<br>
                 return R;<br>
               }<br>
              <br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Instrumentation/GCOVProfiling.<wbr>cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Instrumentation/<wbr>GCOVProfiling.cpp?rev=330059&<wbr>r1=330058&r2=330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Instrumentation/GCOVProfiling.<wbr>cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Instrumentation/GCOVProfiling.<wbr>cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -272,7 +272,7 @@ namespace {<br>
                     write(Len);<br>
                     write(Number);<br>
              <br>
              -      std::sort(<br>
              +      llvm::sort(<br>
                         SortedLinesByFile.begin(),
              SortedLinesByFile.end(),<br>
                         [](StringMapEntry<GCOVLines> *LHS,
              StringMapEntry<GCOVLines> *RHS) {<br>
                           return LHS->getKey() <
              RHS->getKey();<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Instrumentation/<wbr>SanitizerCoverage.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Instrumentation/<wbr>SanitizerCoverage.cpp?rev=<wbr>330059&r1=330058&r2=330059&<wbr>view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Instrumentation/<wbr>SanitizerCoverage.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Instrumentation/<wbr>SanitizerCoverage.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -659,11 +659,11 @@ void SanitizerCoverageModule::<wbr>InjectTrac<br>
                         C = ConstantExpr::getCast(<wbr>CastInst::ZExt,
              It.getCaseValue(), Int64Ty);<br>
                       Initializers.push_back(C);<br>
                     }<br>
              -      std::sort(Initializers.begin() + 2,
              Initializers.end(),<br>
              -                [](const Constant *A, const Constant *B)
              {<br>
              -                  return cast<ConstantInt>(A)-><wbr>getLimitedValue()
              <<br>
              -                         cast<ConstantInt>(B)-><wbr>getLimitedValue();<br>
              -                });<br>
              +      llvm::sort(Initializers.begin(<wbr>) + 2,
              Initializers.end(),<br>
              +                 [](const Constant *A, const Constant *B)
              {<br>
              +                   return cast<ConstantInt>(A)-><wbr>getLimitedValue()
              <<br>
              +                          cast<ConstantInt>(B)-><wbr>getLimitedValue();<br>
              +                 });<br>
                     ArrayType *ArrayOfInt64Ty = ArrayType::get(Int64Ty,
              Initializers.size());<br>
                     GlobalVariable *GV = new GlobalVariable(<br>
                         *CurModule, ArrayOfInt64Ty, false,
              GlobalVariable::<wbr>InternalLinkage,<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/ConstantHoisting.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ConstantHoisting.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>ConstantHoisting.cpp?rev=<wbr>330059&r1=330058&r2=330059&<wbr>view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/ConstantHoisting.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/ConstantHoisting.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -571,8 +571,8 @@ void ConstantHoistingPass::<wbr>findAndMakeBa<br>
               /// rematerialized with an add from a common base
              constant.<br>
               void ConstantHoistingPass::<wbr>findBaseConstants() {<br>
                 // Sort the constants by value and type. This
              invalidates the mapping!<br>
              -  std::sort(ConstCandVec.begin()<wbr>,
              ConstCandVec.end(),<br>
              -            [](const ConstantCandidate &LHS, const
              ConstantCandidate &RHS) {<br>
              +  llvm::sort(ConstCandVec.begin(<wbr>),
              ConstCandVec.end(),<br>
              +             [](const ConstantCandidate &LHS, const
              ConstantCandidate &RHS) {<br>
                   if (LHS.ConstInt->getType() !=
              RHS.ConstInt->getType())<br>
                     return LHS.ConstInt->getType()-><wbr>getBitWidth()
              <<br>
                            RHS.ConstInt->getType()-><wbr>getBitWidth();<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/GVNHoist.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/GVNHoist.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/GVNHoist.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/GVNHoist.cpp Fri
              Apr 13 12:47:57 2018<br>
              @@ -748,11 +748,11 @@ private:<br>
                   // TODO: Remove fully-redundant expressions.<br>
                   // Get instruction from the Map, assume that all the
              Instructions<br>
                   // with same VNs have same rank (this is an
              approximation).<br>
              -    std::sort(Ranks.begin(), Ranks.end(),<br>
              -              [this, &Map](const VNType &r1,
              const VNType &r2) {<br>
              -                return (rank(*Map.lookup(r1).begin())
              <<br>
              -                        rank(*Map.lookup(r2).begin()))<wbr>;<br>
              -              });<br>
              +    llvm::sort(Ranks.begin(), Ranks.end(),<br>
              +               [this, &Map](const VNType &r1,
              const VNType &r2) {<br>
              +                 return (rank(*Map.lookup(r1).begin())
              <<br>
              +                         rank(*Map.lookup(r2).begin()))<wbr>;<br>
              +               });<br>
              <br>
                   // - Sort VNs according to their rank, and start with
              lowest ranked VN<br>
                   // - Take a VN and for each instruction with same VN<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/GVNSink.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/GVNSink.cpp?<wbr>rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/GVNSink.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/GVNSink.cpp Fri
              Apr 13 12:47:57 2018<br>
              @@ -239,7 +239,7 @@ public:<br>
                   SmallVector<std::pair<<wbr>BasicBlock *, Value
              *>, 4> Ops;<br>
                   for (unsigned I = 0, E =
              PN->getNumIncomingValues(); I != E; ++I)<br>
                     Ops.push_back({PN-><wbr>getIncomingBlock(I),
              PN->getIncomingValue(I)});<br>
              -    std::sort(Ops.begin(), Ops.end());<br>
              +    llvm::sort(Ops.begin(), Ops.end());<br>
                   for (auto &P : Ops) {<br>
                     Blocks.push_back(P.first);<br>
                     Values.push_back(P.second);<br>
              @@ -361,7 +361,7 @@ public:<br>
              <br>
                   for (auto &U : I->uses())<br>
                     op_push_back(U.getUser());<br>
              -    std::sort(op_begin(), op_end());<br>
              +    llvm::sort(op_begin(), op_end());<br>
                 }<br>
              <br>
                 void setMemoryUseOrder(unsigned MUO) { MemoryUseOrder =
              MUO; }<br>
              @@ -761,7 +761,7 @@ unsigned GVNSink::sinkBB(BasicBlock
              *BBE<br>
                 }<br>
                 if (Preds.size() < 2)<br>
                   return 0;<br>
              -  std::sort(Preds.begin(), Preds.end());<br>
              +  llvm::sort(Preds.begin(), Preds.end());<br>
              <br>
                 unsigned NumOrigPreds = Preds.size();<br>
                 // We can only sink instructions through unconditional
              branches.<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/GuardWidening.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GuardWidening.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>GuardWidening.cpp?rev=330059&<wbr>r1=330058&r2=330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/GuardWidening.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/GuardWidening.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -555,9 +555,9 @@ bool GuardWideningImpl::<wbr>combineRangeChec<br>
                   // CurrentChecks.size() will typically be 3 here, but
              so far there has been<br>
                   // no need to hard-code that fact.<br>
              <br>
              -    std::sort(CurrentChecks.begin(<wbr>),
              CurrentChecks.end(),<br>
              -              [&](const GuardWideningImpl::RangeCheck
              &LHS,<br>
              -                  const GuardWideningImpl::RangeCheck
              &RHS) {<br>
              +    llvm::sort(CurrentChecks.<wbr>begin(),
              CurrentChecks.end(),<br>
              +               [&](const
              GuardWideningImpl::RangeCheck &LHS,<br>
              +                   const GuardWideningImpl::RangeCheck
              &RHS) {<br>
                     return LHS.getOffsetValue().slt(RHS.<wbr>getOffsetValue());<br>
                   });<br>
              <br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/LoopSink.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopSink.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/LoopSink.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/LoopSink.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/LoopSink.cpp Fri
              Apr 13 12:47:57 2018<br>
              @@ -200,10 +200,10 @@ static bool sinkInstruction(Loop
              &L, Ins<br>
                 SmallVector<BasicBlock *, 2> SortedBBsToSinkInto;<br>
                 SortedBBsToSinkInto.insert(<wbr>SortedBBsToSinkInto.begin(),
              BBsToSinkInto.begin(),<br>
                                            BBsToSinkInto.end());<br>
              -  std::sort(SortedBBsToSinkInto.<wbr>begin(),
              SortedBBsToSinkInto.end(),<br>
              -            [&](BasicBlock *A, BasicBlock *B) {<br>
              -              return *LoopBlockNumber.find(A) <
              *LoopBlockNumber.find(B);<br>
              -            });<br>
              +  llvm::sort(<wbr>SortedBBsToSinkInto.begin(),
              SortedBBsToSinkInto.end(),<br>
              +             [&](BasicBlock *A, BasicBlock *B) {<br>
              +               return *LoopBlockNumber.find(A) <
              *LoopBlockNumber.find(B);<br>
              +             });<br>
              <br>
                 BasicBlock *MoveBB = *SortedBBsToSinkInto.begin();<br>
                 // FIXME: Optimize the efficiency for cloned value
              replacement. The current<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/LoopStrengthReduce.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>LoopStrengthReduce.cpp?rev=<wbr>330059&r1=330058&r2=330059&<wbr>view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/LoopStrengthReduce.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/LoopStrengthReduce.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -1479,7 +1479,7 @@ bool LSRUse::<wbr>HasFormulaWithSameRegs(cons<br>
                 SmallVector<const SCEV *, 4> Key = F.BaseRegs;<br>
                 if (F.ScaledReg) Key.push_back(F.ScaledReg);<br>
                 // Unstable sort by host order ok, because this is only
              used for uniquifying.<br>
              -  std::sort(Key.begin(), Key.end());<br>
              +  llvm::sort(Key.begin(), Key.end());<br>
                 return Uniquifier.count(Key);<br>
               }<br>
              <br>
              @@ -1503,7 +1503,7 @@ bool LSRUse::InsertFormula(const
              Formula<br>
                 SmallVector<const SCEV *, 4> Key = F.BaseRegs;<br>
                 if (F.ScaledReg) Key.push_back(F.ScaledReg);<br>
                 // Unstable sort by host order ok, because this is only
              used for uniquifying.<br>
              -  std::sort(Key.begin(), Key.end());<br>
              +  llvm::sort(Key.begin(), Key.end());<br>
              <br>
                 if (!Uniquifier.insert(Key).<wbr>second)<br>
                   return false;<br>
              @@ -4220,7 +4220,7 @@ void LSRInstance::<wbr>FilterOutUndesirableDe<br>
                         Key.push_back(F.ScaledReg);<br>
                       // Unstable sort by host order ok, because this
              is only used for<br>
                       // uniquifying.<br>
              -        std::sort(Key.begin(), Key.end());<br>
              +        llvm::sort(Key.begin(), Key.end());<br>
              <br>
                       std::pair<BestFormulaeTy::<wbr>const_iterator,
              bool> P =<br>
                         BestFormulae.insert(std::make_<wbr>pair(Key,
              FIdx));<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/MergeICmps.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/MergeICmps.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/MergeICmps.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/MergeICmps.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -439,10 +439,10 @@ BCECmpChain::BCECmpChain(const
              std::vect<br>
               #endif  // MERGEICMPS_DOT_ON<br>
                 // Reorder blocks by LHS. We can do that without
              changing the<br>
                 // semantics because we are only accessing
              dereferencable memory.<br>
              -  std::sort(Comparisons_.begin()<wbr>,
              Comparisons_.end(),<br>
              -            [](const BCECmpBlock &a, const
              BCECmpBlock &b) {<br>
              -              return a.Lhs() < b.Lhs();<br>
              -            });<br>
              +  llvm::sort(Comparisons_.begin(<wbr>),
              Comparisons_.end(),<br>
              +             [](const BCECmpBlock &a, const
              BCECmpBlock &b) {<br>
              +               return a.Lhs() < b.Lhs();<br>
              +             });<br>
               #ifdef MERGEICMPS_DOT_ON<br>
                 errs() << "AFTER REORDERING:\n\n";<br>
                 dump();<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/NewGVN.cpp?<wbr>rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp Fri
              Apr 13 12:47:57 2018<br>
              @@ -958,7 +958,8 @@ static bool isCopyOfAPHI(const Value
              *V)<br>
               // order. The BlockInstRange numbers are generated in an
              RPO walk of the basic<br>
               // blocks.<br>
               void NewGVN::sortPHIOps(<wbr>MutableArrayRef<ValPair>
              Ops) const {<br>
              -  std::sort(Ops.begin(), Ops.end(), [&](const ValPair
              &P1, const ValPair &P2) {<br>
              +  llvm::sort(Ops.begin(), Ops.end(),<br>
              +             [&](const ValPair &P1, const ValPair
              &P2) {<br>
                   return BlockInstRange.lookup(P1.<wbr>second).first
              <<br>
                          BlockInstRange.lookup(P2.<wbr>second).first;<br>
                 });<br>
              @@ -3423,10 +3424,10 @@ bool NewGVN::runGVN() {<br>
                 for (auto &B : RPOT) {<br>
                   auto *Node = DT->getNode(B);<br>
                   if (Node->getChildren().size() > 1)<br>
              -      std::sort(Node->begin(), Node->end(),<br>
              -                [&](const DomTreeNode *A, const
              DomTreeNode *B) {<br>
              -                  return RPOOrdering[A] <
              RPOOrdering[B];<br>
              -                });<br>
              +      llvm::sort(Node->begin(), Node->end(),<br>
              +                 [&](const DomTreeNode *A, const
              DomTreeNode *B) {<br>
              +                   return RPOOrdering[A] <
              RPOOrdering[B];<br>
              +                 });<br>
                 }<br>
              <br>
                 // Now a standard depth first ordering of the domtree
              is equivalent to RPO.<br>
              @@ -3948,7 +3949,7 @@ bool NewGVN::eliminateInstructions(<wbr>Funct<br>
                       convertClassToDFSOrdered(*CC, DFSOrderedSet,
              UseCounts, ProbablyDead);<br>
              <br>
                       // Sort the whole thing.<br>
              -        std::sort(DFSOrderedSet.begin(<wbr>),
              DFSOrderedSet.end());<br>
              +        llvm::sort(DFSOrderedSet.<wbr>begin(),
              DFSOrderedSet.end());<br>
                       for (auto &VD : DFSOrderedSet) {<br>
                         int MemberDFSIn = VD.DFSIn;<br>
                         int MemberDFSOut = VD.DFSOut;<br>
              @@ -4110,7 +4111,7 @@ bool NewGVN::eliminateInstructions(<wbr>Funct<br>
                   // If we have possible dead stores to look at, try to
              eliminate them.<br>
                   if (CC->getStoreCount() > 0) {<br>
                     convertClassToLoadsAndStores(*<wbr>CC,
              PossibleDeadStores);<br>
              -      std::sort(PossibleDeadStores.<wbr>begin(),
              PossibleDeadStores.end());<br>
              +      llvm::sort(PossibleDeadStores.<wbr>begin(),
              PossibleDeadStores.end());<br>
                     ValueDFSStack EliminationStack;<br>
                     for (auto &VD : PossibleDeadStores) {<br>
                       int MemberDFSIn = VD.DFSIn;<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/PlaceSafepoints.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/PlaceSafepoints.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>PlaceSafepoints.cpp?rev=<wbr>330059&r1=330058&r2=330059&<wbr>view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/PlaceSafepoints.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/PlaceSafepoints.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -522,7 +522,7 @@ bool PlaceSafepoints::<wbr>runOnFunction(Func<br>
                   };<br>
                   // We need the order of list to be stable so that
              naming ends up stable<br>
                   // when we split edges.  This makes test cases much
              easier to write.<br>
              -    std::sort(PollLocations.begin(<wbr>),
              PollLocations.end(), OrderByBBName);<br>
              +    llvm::sort(PollLocations.<wbr>begin(),
              PollLocations.end(), OrderByBBName);<br>
              <br>
                   // We can sometimes end up with duplicate poll
              locations.  This happens if<br>
                   // a single loop is visited more than once.   The
              fact this happens seems<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/<wbr>RewriteStatepointsForGC.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>RewriteStatepointsForGC.cpp?<wbr>rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/<wbr>RewriteStatepointsForGC.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/<wbr>RewriteStatepointsForGC.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -1823,7 +1823,7 @@ static void relocationViaAlloca(<br>
                     }<br>
                   }<br>
              <br>
              -    std::sort(Uses.begin(), Uses.end());<br>
              +    llvm::sort(Uses.begin(), Uses.end());<br>
                   auto Last = std::unique(Uses.begin(), Uses.end());<br>
                   Uses.erase(Last, Uses.end());<br>
              <br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/SROA.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SROA.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/SROA.cpp?<wbr>rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/SROA.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/SROA.cpp Fri Apr
              13 12:47:57 2018<br>
              @@ -273,7 +273,7 @@ public:<br>
                   int OldSize = Slices.size();<br>
                   Slices.append(NewSlices.begin(<wbr>),
              NewSlices.end());<br>
                   auto SliceI = Slices.begin() + OldSize;<br>
              -    std::sort(SliceI, Slices.end());<br>
              +    llvm::sort(SliceI, Slices.end());<br>
                   std::inplace_merge(Slices.<wbr>begin(), SliceI,
              Slices.end());<br>
                 }<br>
              <br>
              @@ -1057,7 +1057,7 @@ AllocaSlices::AllocaSlices(<wbr>const
              DataLay<br>
              <br>
                 // Sort the uses. This arranges for the offsets to be
              in ascending order,<br>
                 // and the sizes to be in descending order.<br>
              -  std::sort(Slices.begin(), Slices.end());<br>
              +  llvm::sort(Slices.begin(), Slices.end());<br>
               }<br>
              <br>
               #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)<br>
              @@ -1891,7 +1891,7 @@ static VectorType
              *isVectorPromotionViab<br>
                            "All non-integer types eliminated!");<br>
                     return RHSTy->getNumElements() <
              LHSTy->getNumElements();<br>
                   };<br>
              -    std::sort(CandidateTys.begin()<wbr>,
              CandidateTys.end(), RankVectorTypes);<br>
              +    llvm::sort(CandidateTys.begin(<wbr>),
              CandidateTys.end(), RankVectorTypes);<br>
                   CandidateTys.erase(<br>
                       std::unique(CandidateTys.<wbr>begin(),
              CandidateTys.end(), RankVectorTypes),<br>
                       CandidateTys.end());<br>
              @@ -4152,7 +4152,7 @@ bool SROA::splitAlloca(AllocaInst
              &AI, A<br>
                 }<br>
              <br>
                 if (!IsSorted)<br>
              -    std::sort(AS.begin(), AS.end());<br>
              +    llvm::sort(AS.begin(), AS.end());<br>
              <br>
                 /// Describes the allocas introduced by
              rewritePartition in order to migrate<br>
                 /// the debug info.<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/SimpleLoopUnswitch.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/<wbr>SimpleLoopUnswitch.cpp?rev=<wbr>330059&r1=330058&r2=330059&<wbr>view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Scalar/SimpleLoopUnswitch.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Scalar/SimpleLoopUnswitch.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -1128,11 +1128,12 @@ static Loop *buildClonedLoops(Loop
              &Orig<br>
                 // matter as we're just trying to build up the map from
              inside-out; we use<br>
                 // the map in a more stably ordered way below.<br>
                 auto OrderedClonedExitsInLoops = ClonedExitsInLoops;<br>
              -  std::sort(<wbr>OrderedClonedExitsInLoops.<wbr>begin(),
              OrderedClonedExitsInLoops.end(<wbr>),<br>
              -            [&](BasicBlock *LHS, BasicBlock *RHS) {<br>
              -              return ExitLoopMap.lookup(LHS)-><wbr>getLoopDepth()
              <<br>
              -                     ExitLoopMap.lookup(RHS)-><wbr>getLoopDepth();<br>
              -            });<br>
              +  llvm::sort(<wbr>OrderedClonedExitsInLoops.<wbr>begin(),<br>
              +             OrderedClonedExitsInLoops.end(<wbr>),<br>
              +             [&](BasicBlock *LHS, BasicBlock *RHS) {<br>
              +               return ExitLoopMap.lookup(LHS)-><wbr>getLoopDepth()
              <<br>
              +                      ExitLoopMap.lookup(RHS)-><wbr>getLoopDepth();<br>
              +             });<br>
              <br>
                 // Populate the existing ExitLoopMap with everything
              reachable from each<br>
                 // exit, starting from the inner most exit.<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/<wbr>ImportedFunctionsInliningStati<wbr>stics.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/ImportedFunctionsInliningStatistics.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/<wbr>ImportedFunctionsInliningStati<wbr>stics.cpp?rev=330059&r1=<wbr>330058&r2=330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/<wbr>ImportedFunctionsInliningStati<wbr>stics.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/<wbr>ImportedFunctionsInliningStati<wbr>stics.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -161,7 +161,7 @@ void ImportedFunctionsInliningStati<wbr>stics<br>
              <br>
               void ImportedFunctionsInliningStati<wbr>stics::calculateRealInlines()
              {<br>
                 // Removing duplicated Callers.<br>
              -  std::sort(NonImportedCallers.<wbr>begin(),
              NonImportedCallers.end());<br>
              +  llvm::sort(NonImportedCallers.<wbr>begin(),
              NonImportedCallers.end());<br>
                 NonImportedCallers.erase(<br>
                     std::unique(<wbr>NonImportedCallers.begin(),
              NonImportedCallers.end()),<br>
                     NonImportedCallers.end());<br>
              @@ -190,13 +190,14 @@ ImportedFunctionsInliningStati<wbr>stics::get<br>
                 for (const NodesMapTy::value_type& Node : NodesMap)<br>
                   SortedNodes.push_back(&Node);<br>
              <br>
              -  std::sort(<br>
              +  llvm::sort(<br>
                     SortedNodes.begin(), SortedNodes.end(),<br>
                     [&](const SortedNodesTy::value_type &Lhs,<br>
                         const SortedNodesTy::value_type &Rhs) {<br>
                       if (Lhs->second->NumberOfInlines !=
              Rhs->second->NumberOfInlines)<br>
                         return Lhs->second->NumberOfInlines >
              Rhs->second->NumberOfInlines;<br>
              -        if (Lhs->second-><wbr>NumberOfRealInlines
              != Rhs->second-><wbr>NumberOfRealInlines)<br>
              +        if (Lhs->second-><wbr>NumberOfRealInlines
              !=<br>
              +            Rhs->second-><wbr>NumberOfRealInlines)<br>
                         return Lhs->second-><wbr>NumberOfRealInlines
              ><br>
                                Rhs->second-><wbr>NumberOfRealInlines;<br>
                       return Lhs->first() < Rhs->first();<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/LowerSwitch.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/LowerSwitch.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/LowerSwitch.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/LowerSwitch.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -382,7 +382,7 @@ unsigned LowerSwitch::Clusterify(<wbr>CaseVec<br>
                   Cases.push_back(CaseRange(<wbr>Case.getCaseValue(),
              Case.getCaseValue(),<br>
                                             Case.getCaseSuccessor()));<br>
              <br>
              -  std::sort(Cases.begin(), Cases.end(), CaseCmp());<br>
              +  llvm::sort(Cases.begin(), Cases.end(), CaseCmp());<br>
              <br>
                 // Merge case into clusters<br>
                 if (Cases.size() >= 2) {<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/PredicateInfo.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/PredicateInfo.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/<wbr>PredicateInfo.cpp?rev=330059&<wbr>r1=330058&r2=330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/PredicateInfo.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/PredicateInfo.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -553,7 +553,7 @@ void PredicateInfo::renameUses(<wbr>SmallPtrS<br>
                 auto Comparator = [&](const Value *A, const Value
              *B) {<br>
                   return valueComesBefore(OI, A, B);<br>
                 };<br>
              -  std::sort(OpsToRename.begin(), OpsToRename.end(),
              Comparator);<br>
              +  llvm::sort(OpsToRename.begin()<wbr>, OpsToRename.end(),
              Comparator);<br>
                 ValueDFS_Compare Compare(OI);<br>
                 // Compute liveness, and rename in O(uses) per Op.<br>
                 for (auto *Op : OpsToRename) {<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/PromoteMemoryToRegister.<wbr>cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/PromoteMemoryToRegister.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/<wbr>PromoteMemoryToRegister.cpp?<wbr>rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/PromoteMemoryToRegister.<wbr>cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/PromoteMemoryToRegister.<wbr>cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -475,7 +475,7 @@ static bool
              promoteSingleBlockAlloca(All<br>
              <br>
                 // Sort the stores by their index, making it efficient
              to do a lookup with a<br>
                 // binary search.<br>
              -  std::sort(StoresByIndex.begin(<wbr>),
              StoresByIndex.end(), less_first());<br>
              +  llvm::sort(StoresByIndex.<wbr>begin(),
              StoresByIndex.end(), less_first());<br>
              <br>
                 // Walk all of the loads from this alloca, replacing
              them with the nearest<br>
                 // store above them, if any.<br>
              @@ -631,10 +631,10 @@ void PromoteMem2Reg::run() {<br>
                   SmallVector<BasicBlock *, 32> PHIBlocks;<br>
                   IDF.calculate(PHIBlocks);<br>
                   if (PHIBlocks.size() > 1)<br>
              -      std::sort(PHIBlocks.begin(), PHIBlocks.end(),<br>
              -                [this](BasicBlock *A, BasicBlock *B) {<br>
              -                  return BBNumbers.lookup(A) <
              BBNumbers.lookup(B);<br>
              -                });<br>
              +      llvm::sort(PHIBlocks.begin(), PHIBlocks.end(),<br>
              +                 [this](BasicBlock *A, BasicBlock *B) {<br>
              +                   return BBNumbers.lookup(A) <
              BBNumbers.lookup(B);<br>
              +                 });<br>
              <br>
                   unsigned CurrentVersion = 0;<br>
                   for (BasicBlock *BB : PHIBlocks)<br>
              @@ -740,7 +740,7 @@ void PromoteMem2Reg::run() {<br>
                   // Ok, now we know that all of the PHI nodes are
              missing entries for some<br>
                   // basic blocks.  Start by sorting the incoming
              predecessors for efficient<br>
                   // access.<br>
              -    std::sort(Preds.begin(), Preds.end());<br>
              +    llvm::sort(Preds.begin(), Preds.end());<br>
              <br>
                   // Now we loop through all BB's which have entries in
              SomePHI and remove<br>
                   // them from the Preds list.<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/SimplifyCFG.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/SimplifyCFG.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/SimplifyCFG.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/SimplifyCFG.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -5519,7 +5519,7 @@ static bool
              ReduceSwitchRange(SwitchInst<br>
                 SmallVector<int64_t,4> Values;<br>
                 for (auto &C : SI->cases())<br>
                   Values.push_back(C.<wbr>getCaseValue()->getValue().<wbr>getSExtValue());<br>
              -  std::sort(Values.begin(), Values.end());<br>
              +  llvm::sort(Values.begin(), Values.end());<br>
              <br>
                 // If the switch is already dense, there's nothing
              useful to do here.<br>
                 if (isSwitchDense(Values))<br>
              <br>
              Modified: llvm/trunk/lib/Transforms/<wbr>Utils/SplitModule.cpp<br>
              URL: <a
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SplitModule.cpp?rev=330059&r1=330058&r2=330059&view=diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Utils/SplitModule.<wbr>cpp?rev=330059&r1=330058&r2=<wbr>330059&view=diff</a><br>
              ==============================<wbr>==============================<wbr>==================<br>
              --- llvm/trunk/lib/Transforms/<wbr>Utils/SplitModule.cpp
              (original)<br>
              +++ llvm/trunk/lib/Transforms/<wbr>Utils/SplitModule.cpp
              Fri Apr 13 12:47:57 2018<br>
              @@ -180,12 +180,14 @@ static void findPartitions(Module
              *M, Cl<br>
                         std::make_pair(std::distance(<wbr>GVtoClusterMap.member_begin(I)<wbr>,<br>
                                                     
              GVtoClusterMap.member_end()), I));<br>
              <br>
              -  std::sort(Sets.begin(), Sets.end(), [](const SortType
              &a, const SortType &b) {<br>
              -    if (a.first == b.first)<br>
              -      return a.second->getData()->getName() >
              b.second->getData()->getName()<wbr>;<br>
              -    else<br>
              -      return a.first > b.first;<br>
              -  });<br>
              +  llvm::sort(Sets.begin(), Sets.end(),<br>
              +             [](const SortType &a, const SortType
              &b) {<br>
              +               if (a.first == b.first)<br>
              +                 return
              a.second->getData()->getName() ><br>
              +                       
              b.second->getData()->getName()<wbr>;<br>
              +               else<br>
              +                 return a.first > b.first;<br>
              +             });<br>
              <br>
                 for (auto &I : Sets) {<br>
                   unsigned CurrentClusterID =
              BalancinQueue.top().first;<br>
              <br>
              <br>
              ______________________________<wbr>_________________<br>
              llvm-commits mailing list<br>
              <a href="mailto:llvm-commits@lists.llvm.org"
                moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br>
              <a
                href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>