<div dir="ltr"><pre><span class="gmail-stdout"><font color="#000000" face="Courier New, courier, monotype, monospace" size="3"><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1379/steps/check-llvm%20check-clang%20stage3%2Fmsan/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1379/steps/check-llvm%20check-clang%20stage3%2Fmsan/logs/stdio</a><br></font></span></pre><pre style="font-family:"Courier New",courier,monotype,monospace;color:rgb(0,0,0);font-size:medium"><span class="gmail-stdout">FAILED: tools/llvm-xray/CMakeFiles/llvm-xray.dir/xray-color-helper.cc.o 
/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/bin/clang++   -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_GLOBAL_ISEL -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/llvm-xray -I/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llvm-xray -Iinclude -I/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fcolor-diagnostics -ffunction-sections -fdata-sections -O3    -UNDEBUG  -fno-exceptions -fno-rtti -MD -MT tools/llvm-xray/CMakeFiles/llvm-xray.dir/xray-color-helper.cc.o -MF tools/llvm-xray/CMakeFiles/llvm-xray.dir/xray-color-helper.cc.o.d -o tools/llvm-xray/CMakeFiles/llvm-xray.dir/xray-color-helper.cc.o -c /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llvm-xray/xray-color-helper.cc
==969==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x3533258 in llvm::X86InstrInfo::AnalyzeBranchImpl(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*&, llvm::MachineBasicBlock*&, llvm::SmallVectorImpl<llvm::MachineOperand>&, llvm::SmallVectorImpl<llvm::MachineInstr*>&, bool) const /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/X86/X86InstrInfo.cpp:6093:22
    #1 0x353333d in llvm::X86InstrInfo::analyzeBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*&, llvm::MachineBasicBlock*&, llvm::SmallVectorImpl<llvm::MachineOperand>&, bool) const /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/X86/X86InstrInfo.cpp:6133:10
    #2 0x42fddcc in llvm::TailDuplicator::tailDuplicate(bool, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl<llvm::MachineBasicBlock*>&, llvm::SmallVectorImpl<llvm::MachineInstr*>&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/TailDuplicator.cpp:837:10
    #3 0x42fab3a in llvm::TailDuplicator::tailDuplicateAndUpdate(bool, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl<llvm::Machine</span><span class="gmail-stdout">BasicBlock*>*, llvm::function_ref<void (llvm::MachineBasicBlock*)>*) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/TailDuplicator.cpp:148:8
</span><span class="gmail-stdout">    #4 0x44e921b in (anonymous namespace)::MachineBlockPlacement::maybeTailDuplicateBlock(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, (anonymous namespace)::BlockChain&, llvm::SmallSetVector<llvm::MachineBasicBlock const*, 16u>*, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineBasicBlock, true, false, void>, false, false>&, bool&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineBlockPlacement.cpp:2620:11
    #5 0x44cef5d in repeatedlyTailDuplicateBlock /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineBlockPlacement.cpp:2501:13
    #6 0x44cef5d in (anonymous namespace)::MachineBlockPlacement::buildChain(llvm::MachineBasicBlock const*, (anonymous namespace)::BlockChain&, llvm::SmallSetVector<llvm::MachineBasicBlock const*, 16u>*) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineBlockPlacement.cpp:1699
    #7 0x44b6970 in (anonymous namespace)::MachineBlockPlacement::buildCFGChains() /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineBlockPlacement.cpp:2278:3
    #8 0x44b14a9 in (anonymous namespace)::MachineBlockPlacement::runOnMachineFunction(llvm::MachineFunction&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineBlockPlacement.cpp:2696:3
    #9 0x3f6dcac in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineFunctionPass.cpp:62:13
    #10 0x48e2bee in llvm::FPPassManager::runOnFunction(llvm::Function&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1519:27
    #11 0x48e32b4 in llvm::FPPassManager::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1540:16
    #12 0x48e45d3 in runOnModule /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1596:27
    #13 0x48e45d3 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1699
    #14 0x5d3e27e in EmitAssembly /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:792:19
    #15 0x5d3e27e in clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream> >) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:1101
    #16 0x74dfefe in clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp:258:7
    #17 0x848e176 in clang::ParseAST(clang::Sema&, bool, bool) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/Parse/ParseAST.cpp:159:13
    #18 0x69f82ba in clang::FrontendAction::Execute() /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:837:8
    #19 0x693a02c in clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:970:11
    #20 0x6bc3705 in clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:249:25
    #21 0x976e25 in cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/driver/cc1_main.cpp:221:13
    #22 0x970ce7 in ExecuteCC1Tool /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/driver/driver.cpp:299:12
    #23 0x970ce7 in main /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/driver/driver.cpp:380
    #24 0x7f561ec5c82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #25 0x8f0d38 in _start (/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/bin/clang-5.0+0x8f0d38)</span></pre></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, May 20, 2017 at 6:47 PM, Sanjoy Das via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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: sanjoy<br>
Date: Sat May 20 20:47:50 2017<br>
New Revision: 303497<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=303497&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=303497&view=rev</a><br>
Log:<br>
[SCEV] Clarify behavior around max backedge taken count<br>
<br>
This change makes the split between the "exact" backedge taken count<br>
and the "maximum" backedge taken count a bit more obvious.  Both of<br>
these are upper bounds on the number of times the loop header<br>
executes (since SCEV does not account for most kinds of abnormal<br>
control flow), but the latter is guaranteed to be a constant.<br>
<br>
There were a few places where the max backedge taken count *was* a<br>
non-constant; I've changed those to compute constants instead.<br>
<br>
At this point, I'm not sure if the constant max backedge count can be<br>
computed by calling `getUnsignedRange(Exact).<wbr>getUnsignedMax()` without<br>
losing precision.  If it can, we can simplify even further by making<br>
`getMaxBackedgeTakenCount` a thin wrapper around<br>
`getBackedgeTakenCount` and `getUnsignedRange`.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/<wbr>Analysis/ScalarEvolution.h<br>
    llvm/trunk/lib/Analysis/<wbr>ScalarEvolution.cpp<br>
    llvm/trunk/test/Analysis/<wbr>ScalarEvolution/nsw.ll<br>
    llvm/trunk/test/Analysis/<wbr>ScalarEvolution/trip-count-<wbr>pow2.ll<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>Analysis/ScalarEvolution.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolution.h?rev=303497&r1=303496&r2=303497&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/Analysis/ScalarEvolution.<wbr>h?rev=303497&r1=303496&r2=<wbr>303497&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>Analysis/ScalarEvolution.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>Analysis/ScalarEvolution.h Sat May 20 20:47:50 2017<br>
@@ -656,10 +656,12 @@ private:<br>
     /// Test whether this BackedgeTakenInfo contains complete information.<br>
     bool hasFullInfo() const { return isComplete(); }<br>
<br>
-    /// Return an expression indicating the exact backedge-taken count of the<br>
-    /// loop if it is known or SCEVCouldNotCompute otherwise. This is the<br>
-    /// number of times the loop header can be guaranteed to execute, minus<br>
-    /// one.<br>
+    /// Return an expression indicating the exact *backedge-taken*<br>
+    /// count of the loop if it is known or SCEVCouldNotCompute<br>
+    /// otherwise.  If execution makes it to the backedge on every<br>
+    /// iteration (i.e. there are no abnormal exists like exception<br>
+    /// throws and thread exits) then this is the number of times the<br>
+    /// loop header will execute minus one.<br>
     ///<br>
     /// If the SCEV predicate associated with the answer can be different<br>
     /// from AlwaysTrue, we must add a (non null) Predicates argument.<br>
@@ -1398,11 +1400,11 @@ public:<br>
   const SCEV *getExitCount(const Loop *L, BasicBlock *ExitingBlock);<br>
<br>
   /// If the specified loop has a predictable backedge-taken count, return it,<br>
-  /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count<br>
-  /// is the number of times the loop header will be branched to from within<br>
-  /// the loop. This is one less than the trip count of the loop, since it<br>
-  /// doesn't count the first iteration, when the header is branched to from<br>
-  /// outside the loop.<br>
+  /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count is<br>
+  /// the number of times the loop header will be branched to from within the<br>
+  /// loop, assuming there are no abnormal exists like exception throws. This is<br>
+  /// one less than the trip count of the loop, since it doesn't count the first<br>
+  /// iteration, when the header is branched to from outside the loop.<br>
   ///<br>
   /// Note that it is not valid to call this method on a loop without a<br>
   /// loop-invariant backedge-taken count (see<br>
@@ -1417,8 +1419,10 @@ public:<br>
   const SCEV *<wbr>getPredicatedBackedgeTakenCoun<wbr>t(const Loop *L,<br>
                                               SCEVUnionPredicate &Predicates);<br>
<br>
-  /// Similar to getBackedgeTakenCount, except return the least SCEV value<br>
-  /// that is known never to be less than the actual backedge taken count.<br>
+  /// When successful, this returns a SCEVConstant that is greater than or equal<br>
+  /// to (i.e. a "conservative over-approximation") of the value returend by<br>
+  /// getBackedgeTakenCount.  If such a value cannot be computed, it returns the<br>
+  /// SCEVCouldNotCompute object.<br>
   const SCEV *getMaxBackedgeTakenCount(<wbr>const Loop *L);<br>
<br>
   /// Return true if the backedge taken count is either the value returned by<br>
<br>
Modified: llvm/trunk/lib/Analysis/<wbr>ScalarEvolution.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=303497&r1=303496&r2=303497&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Analysis/ScalarEvolution.cpp?<wbr>rev=303497&r1=303496&r2=<wbr>303497&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Analysis/<wbr>ScalarEvolution.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/<wbr>ScalarEvolution.cpp Sat May 20 20:47:50 2017<br>
@@ -5947,6 +5947,8 @@ ScalarEvolution::<wbr>BackedgeTakenInfo::getM<br>
   if (any_of(ExitNotTaken, PredicateNotAlwaysTrue) || !getMax())<br>
     return SE->getCouldNotCompute();<br>
<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(getMax()) || isa<SCEVConstant>(getMax())) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
   return getMax();<br>
 }<br>
<br>
@@ -5972,7 +5974,11 @@ bool ScalarEvolution::<wbr>BackedgeTakenInfo:<br>
 }<br>
<br>
 ScalarEvolution::ExitLimit::<wbr>ExitLimit(const SCEV *E)<br>
-    : ExactNotTaken(E), MaxNotTaken(E), MaxOrZero(false) {}<br>
+    : ExactNotTaken(E), MaxNotTaken(E), MaxOrZero(false) {<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(<wbr>MaxNotTaken) ||<br>
+          isa<SCEVConstant>(MaxNotTaken)<wbr>) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
+}<br>
<br>
 ScalarEvolution::ExitLimit::<wbr>ExitLimit(<br>
     const SCEV *E, const SCEV *M, bool MaxOrZero,<br>
@@ -5981,6 +5987,9 @@ ScalarEvolution::ExitLimit::<wbr>ExitLimit(<br>
   assert((isa<<wbr>SCEVCouldNotCompute>(<wbr>ExactNotTaken) ||<br>
           !isa<SCEVCouldNotCompute>(<wbr>MaxNotTaken)) &&<br>
          "Exact is not allowed to be less precise than Max");<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(<wbr>MaxNotTaken) ||<br>
+          isa<SCEVConstant>(MaxNotTaken)<wbr>) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
   for (auto *PredSet : PredSetList)<br>
     for (auto *P : *PredSet)<br>
       addPredicate(P);<br>
@@ -5989,11 +5998,19 @@ ScalarEvolution::ExitLimit::<wbr>ExitLimit(<br>
 ScalarEvolution::ExitLimit::<wbr>ExitLimit(<br>
     const SCEV *E, const SCEV *M, bool MaxOrZero,<br>
     const SmallPtrSetImpl<const SCEVPredicate *> &PredSet)<br>
-    : ExitLimit(E, M, MaxOrZero, {&PredSet}) {}<br>
+    : ExitLimit(E, M, MaxOrZero, {&PredSet}) {<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(<wbr>MaxNotTaken) ||<br>
+          isa<SCEVConstant>(MaxNotTaken)<wbr>) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
+}<br>
<br>
 ScalarEvolution::ExitLimit::<wbr>ExitLimit(const SCEV *E, const SCEV *M,<br>
                                       bool MaxOrZero)<br>
-    : ExitLimit(E, M, MaxOrZero, None) {}<br>
+    : ExitLimit(E, M, MaxOrZero, None) {<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(<wbr>MaxNotTaken) ||<br>
+          isa<SCEVConstant>(MaxNotTaken)<wbr>) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
+}<br>
<br>
 /// Allocate memory for BackedgeTakenInfo and copy the not-taken count of each<br>
 /// computable exit into a persistent ExitNotTakenInfo array.<br>
@@ -6018,6 +6035,8 @@ ScalarEvolution::<wbr>BackedgeTakenInfo::Back<br>
<br>
         return ExitNotTakenInfo(ExitBB, EL.ExactNotTaken, std::move(Predicate));<br>
       });<br>
+  assert((isa<<wbr>SCEVCouldNotCompute>(MaxCount) || isa<SCEVConstant>(MaxCount)) &&<br>
+         "No point in having a non-constant max backedge taken count!");<br>
 }<br>
<br>
 /// Invalidate this result and free the ExitNotTakenInfo array.<br>
@@ -6279,7 +6298,7 @@ ScalarEvolution::ExitLimit ScalarEvoluti<br>
       // to not.<br>
       if (isa<SCEVCouldNotCompute>(<wbr>MaxBECount) &&<br>
           !isa<SCEVCouldNotCompute>(<wbr>BECount))<br>
-        MaxBECount = BECount;<br>
+        MaxBECount = getConstant(getUnsignedRange(<wbr>BECount).getUnsignedMax());<br>
<br>
       return ExitLimit(BECount, MaxBECount, false,<br>
                        {&EL0.Predicates, &EL1.Predicates});<br>
@@ -7583,13 +7602,20 @@ ScalarEvolution::howFarToZero(<wbr>const SCEV<br>
       loopHasNoAbnormalExits(AddRec-<wbr>>getLoop())) {<br>
     const SCEV *Exact =<br>
         getUDivExpr(Distance, CountDown ? getNegativeSCEV(Step) : Step);<br>
-    return ExitLimit(Exact, Exact, false, Predicates);<br>
+    const SCEV *Max =<br>
+        Exact == getCouldNotCompute()<br>
+            ? Exact<br>
+            : getConstant(getUnsignedRange(<wbr>Exact).getUnsignedMax());<br>
+    return ExitLimit(Exact, Max, false, Predicates);<br>
   }<br>
<br>
   // Solve the general equation.<br>
-  const SCEV *E = SolveLinEquationWithOverflow(<br>
-      StepC->getAPInt(), getNegativeSCEV(Start), *this);<br>
-  return ExitLimit(E, E, false, Predicates);<br>
+  const SCEV *E = SolveLinEquationWithOverflow(<wbr>StepC->getAPInt(),<br>
+                                               getNegativeSCEV(Start), *this);<br>
+  const SCEV *M = E == getCouldNotCompute()<br>
+                      ? E<br>
+                      : getConstant(getUnsignedRange(<wbr>E).getUnsignedMax());<br>
+  return ExitLimit(E, M, false, Predicates);<br>
 }<br>
<br>
 ScalarEvolution::ExitLimit<br>
@@ -9218,8 +9244,9 @@ ScalarEvolution::<wbr>howManyLessThans(const<br>
                                 getConstant(<wbr>StrideForMaxBECount), false);<br>
   }<br>
<br>
-  if (isa<SCEVCouldNotCompute>(<wbr>MaxBECount))<br>
-    MaxBECount = BECount;<br>
+  if (isa<SCEVCouldNotCompute>(<wbr>MaxBECount) &&<br>
+      !isa<SCEVCouldNotCompute>(<wbr>BECount))<br>
+    MaxBECount = getConstant(getUnsignedRange(<wbr>BECount).getUnsignedMax());<br>
<br>
   return ExitLimit(BECount, MaxBECount, MaxOrZero, Predicates);<br>
 }<br>
<br>
Modified: llvm/trunk/test/Analysis/<wbr>ScalarEvolution/nsw.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/nsw.ll?rev=303497&r1=303496&r2=303497&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Analysis/ScalarEvolution/nsw.<wbr>ll?rev=303497&r1=303496&r2=<wbr>303497&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Analysis/<wbr>ScalarEvolution/nsw.ll (original)<br>
+++ llvm/trunk/test/Analysis/<wbr>ScalarEvolution/nsw.ll Sat May 20 20:47:50 2017<br>
@@ -102,7 +102,7 @@ for.body.i.i:<br>
   %cmp.i.i = icmp eq i32* %ptrincdec.i.i, %end<br>
   br i1 %cmp.i.i, label %_ZSt4fillIPiiEvT_S1_RKT0_.<wbr>exit, label %for.body.i.i<br>
 ; CHECK: Loop %for.body.i.i: backedge-taken count is ((-4 + (-1 * %begin) + %end) /u 4)<br>
-; CHECK: Loop %for.body.i.i: max backedge-taken count is ((-4 + (-1 * %begin) + %end) /u 4)<br>
+; CHECK: Loop %for.body.i.i: max backedge-taken count is 4611686018427387903<br>
 _ZSt4fillIPiiEvT_S1_RKT0_.<wbr>exit:                   ; preds = %for.body.i.i, %entry<br>
   ret void<br>
 }<br>
<br>
Modified: llvm/trunk/test/Analysis/<wbr>ScalarEvolution/trip-count-<wbr>pow2.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/trip-count-pow2.ll?rev=303497&r1=303496&r2=303497&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Analysis/ScalarEvolution/trip-<wbr>count-pow2.ll?rev=303497&r1=<wbr>303496&r2=303497&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Analysis/<wbr>ScalarEvolution/trip-count-<wbr>pow2.ll (original)<br>
+++ llvm/trunk/test/Analysis/<wbr>ScalarEvolution/trip-count-<wbr>pow2.ll Sat May 20 20:47:50 2017<br>
@@ -14,7 +14,7 @@ exit:<br>
<br>
 ; CHECK-LABEL: @test1<br>
 ; CHECK: Loop %loop: backedge-taken count is ((-32 + (96 * %n)) /u 32)<br>
-; CHECK: Loop %loop: max backedge-taken count is ((-32 + (96 * %n)) /u 32)<br>
+; CHECK: Loop %loop: max backedge-taken count is 134217727<br>
 }<br>
<br>
 ; PR19183<br>
@@ -32,7 +32,7 @@ exit:<br>
<br>
 ; CHECK-LABEL: @test2<br>
 ; CHECK: Loop %loop: backedge-taken count is ((-32 + (32 * (%n /u 32))) /u 32)<br>
-; CHECK: Loop %loop: max backedge-taken count is ((-32 + (32 * (%n /u 32))) /u 32)<br>
+; CHECK: Loop %loop: max backedge-taken count is 134217727<br>
 }<br>
<br>
 define void @test3(i32 %n) {<br>
@@ -49,7 +49,7 @@ exit:<br>
<br>
 ; CHECK-LABEL: @test3<br>
 ; CHECK: Loop %loop: backedge-taken count is ((-32 + (32 * %n)) /u 32)<br>
-; CHECK: Loop %loop: max backedge-taken count is ((-32 + (32 * %n)) /u 32)<br>
+; CHECK: Loop %loop: max backedge-taken count is 134217727<br>
 }<br>
<br>
 define void @test4(i32 %n) {<br>
@@ -66,7 +66,7 @@ exit:<br>
<br>
 ; CHECK-LABEL: @test4<br>
 ; CHECK: Loop %loop: backedge-taken count is ((-4 + (-1431655764 * %n)) /u 4)<br>
-; CHECK: Loop %loop: max backedge-taken count is ((-4 + (-1431655764 * %n)) /u 4)<br>
+; CHECK: Loop %loop: max backedge-taken count is 1073741823<br>
 }<br>
<br>
 define void @test5(i32 %n) {<br>
@@ -83,5 +83,5 @@ exit:<br>
<br>
 ; CHECK-LABEL: @test5<br>
 ; CHECK: Loop %loop: backedge-taken count is ((-4 + (4 * %n)) /u 4)<br>
-; CHECK: Loop %loop: max backedge-taken count is ((-4 + (4 * %n)) /u 4)<br>
+; CHECK: Loop %loop: max backedge-taken count is 1073741823<br>
 }<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>