[llvm-commits] [llvm] r46907 - /llvm/trunk/include/llvm/Analysis/LoopInfo.h

Chris Lattner clattner at apple.com
Sat Feb 9 10:38:32 PST 2008


On Feb 9, 2008, at 10:06 AM, Wojciech Matyjewicz wrote:

> Author: wmat
> Date: Sat Feb  9 12:06:58 2008
> New Revision: 46907
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46907&view=rev
> Log:
> Add a check if the initial value of the induction variable is 0 (the  
> method comment says it should be).

Nice.  This method is pretty large, and it is specific to the LLVM IR  
loop info (not machine loop info etc).  Would it be possible to make  
it an out of line method in LoopInfo that isn't in the template?

-Chris

>
> Modified:
>    llvm/trunk/include/llvm/Analysis/LoopInfo.h
>
> Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopInfo.h?rev=46907&r1=46906&r2=46907&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/Analysis/LoopInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/LoopInfo.h Sat Feb  9 12:06:58  
> 2008
> @@ -360,12 +360,16 @@
>     // Loop over all of the PHI nodes, looking for a canonical indvar.
>     for (typename BlockT::iterator I = H->begin(); isa<PHINode>(I); + 
> +I) {
>       PHINode *PN = cast<PHINode>(I);
> -      if (Instruction *Inc =
> -          dyn_cast<Instruction>(PN- 
> >getIncomingValueForBlock(Backedge)))
> -        if (Inc->getOpcode() == Instruction::Add && Inc- 
> >getOperand(0) == PN)
> -          if (ConstantInt *CI = dyn_cast<ConstantInt>(Inc- 
> >getOperand(1)))
> -            if (CI->equalsInt(1))
> -              return PN;
> +      if (ConstantInt *CI =
> +          dyn_cast<ConstantInt>(PN- 
> >getIncomingValueForBlock(Incoming)))
> +        if (CI->isNullValue())
> +          if (Instruction *Inc =
> +              dyn_cast<Instruction>(PN- 
> >getIncomingValueForBlock(Backedge)))
> +            if (Inc->getOpcode() == Instruction::Add &&
> +                Inc->getOperand(0) == PN)
> +              if (ConstantInt *CI = dyn_cast<ConstantInt>(Inc- 
> >getOperand(1)))
> +                if (CI->equalsInt(1))
> +                  return PN;
>     }
>     return 0;
>   }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list