Add some comments.
authorDan Gohman <gohman@apple.com>
Thu, 20 May 2010 20:00:41 +0000 (20:00 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 20 May 2010 20:00:41 +0000 (20:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104268 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopStrengthReduce.cpp

index 3c94616fe9567beced6a2812f7448b1fe96fb988..f99e3038765dd0900b1a2c2b493cddcfe98c8036 100644 (file)
@@ -2811,6 +2811,9 @@ void LSRInstance::NarrowSearchSpaceUsingHeuristics() {
       bool Any = false;
       for (size_t i = 0, e = LU.Formulae.size(); i != e; ++i) {
         Formula &F = LU.Formulae[i];
+        // Look for a formula with a constant or GV in a register. If the use
+        // also has a formula with that same value in an immediate field,
+        // delete the one that uses a register.
         for (SmallVectorImpl<const SCEV *>::const_iterator
              I = F.BaseRegs.begin(), E = F.BaseRegs.end(); I != E; ++I) {
           if (const SCEVConstant *C = dyn_cast<SCEVConstant>(*I)) {
@@ -2861,6 +2864,8 @@ void LSRInstance::NarrowSearchSpaceUsingHeuristics() {
                     "separated by a constant offset will use the same "
                     "registers.\n");
 
+    // This is especially useful for unrolled loops.
+
     for (size_t LUIdx = 0, NumUses = Uses.size(); LUIdx != NumUses; ++LUIdx) {
       LSRUse &LU = Uses[LUIdx];
       for (size_t FIdx = 0, NumForms = LU.Formulae.size();
@@ -3074,6 +3079,7 @@ void LSRInstance::Solve(SmallVectorImpl<const Formula *> &Solution) const {
   DenseSet<const SCEV *> VisitedRegs;
   Workspace.reserve(Uses.size());
 
+  // SolveRecurse does all the work.
   SolveRecurse(Solution, SolutionCost, Workspace, CurCost,
                CurRegs, VisitedRegs);