Author: resistor Date: Fri Nov 30 21:01:39 2007 New Revision: 44480 URL: http://llvm.org/viewvc/llvm-project?rev=44480&view=rev Log: Fixes for MachineLoopInfo, mostly from Evan. With these, it should be almost useable!
Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h llvm/trunk/include/llvm/CodeGen/MachineLoopInfo.h Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopInfo.h?rev=44480&r1=44479&r2=44480&view=diff ============================================================================== --- llvm/trunk/include/llvm/Analysis/LoopInfo.h (original) +++ llvm/trunk/include/llvm/Analysis/LoopInfo.h Fri Nov 30 21:01:39 2007 @@ -141,7 +141,7 @@ /// isLoopInvariant - Return true if the specified value is loop invariant /// - bool isLoopInvariant(Value *V) const { + inline bool isLoopInvariant(Value *V) const { if (Instruction *I = dyn_cast<Instruction>(V)) return !contains(I->getParent()); return true; // All non-instructions are loop invariant @@ -327,7 +327,7 @@ /// by one each time through the loop. If so, return the phi node that /// corresponds to it. /// - PHINode *getCanonicalInductionVariable() const { + inline PHINode *getCanonicalInductionVariable() const { BlockT *H = getHeader(); BlockT *Incoming = 0, *Backedge = 0; @@ -365,7 +365,7 @@ /// the canonical induction variable value for the "next" iteration of the /// loop. This always succeeds if getCanonicalInductionVariable succeeds. /// - Instruction *getCanonicalInductionVariableIncrement() const { + inline Instruction *getCanonicalInductionVariableIncrement() const { if (PHINode *PN = getCanonicalInductionVariable()) { bool P1InLoop = contains(PN->getIncomingBlock(1)); return cast<Instruction>(PN->getIncomingValue(P1InLoop)); @@ -378,7 +378,7 @@ /// of the loop executes N-1 times. If the trip-count cannot be determined, /// this returns null. /// - Value *getTripCount() const { + inline Value *getTripCount() const { // Canonical loops will end with a 'cmp ne I, V', where I is the incremented // canonical induction variable and V is the trip count of the loop. Instruction *Inc = getCanonicalInductionVariableIncrement(); @@ -405,7 +405,7 @@ } /// isLCSSAForm - Return true if the Loop is in LCSSA form - bool isLCSSAForm() const { + inline bool isLCSSAForm() const { // Sort the blocks vector so that we can use binary search to do quick // lookups. SmallPtrSet<BlockT*, 16> LoopBBs(block_begin(), block_end()); Modified: llvm/trunk/include/llvm/CodeGen/MachineLoopInfo.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineLoopInfo.h?rev=44480&r1=44479&r2=44480&view=diff ============================================================================== --- llvm/trunk/include/llvm/CodeGen/MachineLoopInfo.h (original) +++ llvm/trunk/include/llvm/CodeGen/MachineLoopInfo.h Fri Nov 30 21:01:39 2007 @@ -39,14 +39,13 @@ namespace llvm { // Provide overrides for Loop methods that don't make sense for machine loops. -template<> +template<> inline PHINode *LoopBase<MachineBasicBlock>::getCanonicalInductionVariable() const { assert(0 && "getCanonicalInductionVariable not supported for machine loops!"); return 0; } -template<> -Instruction* +template<> inline Instruction* LoopBase<MachineBasicBlock>::getCanonicalInductionVariableIncrement() const { assert(0 && "getCanonicalInductionVariableIncrement not supported for machine loops!"); @@ -54,19 +53,19 @@ } template<> -bool LoopBase<MachineBasicBlock>::isLoopInvariant(Value *V) const { +inline bool LoopBase<MachineBasicBlock>::isLoopInvariant(Value *V) const { assert(0 && "isLoopInvariant not supported for machine loops!"); return false; } template<> -Value *LoopBase<MachineBasicBlock>::getTripCount() const { +inline Value *LoopBase<MachineBasicBlock>::getTripCount() const { assert(0 && "getTripCount not supported for machine loops!"); return 0; } template<> -bool LoopBase<MachineBasicBlock>::isLCSSAForm() const { +inline bool LoopBase<MachineBasicBlock>::isLCSSAForm() const { assert(0 && "isLCSSAForm not supported for machine loops"); return false; } @@ -129,10 +128,6 @@ virtual void releaseMemory() { LI->releaseMemory(); } - virtual void print(std::ostream &O, const Module* M = 0) const { - if (O) LI->print(O, M); - } - virtual void getAnalysisUsage(AnalysisUsage &AU) const; /// removeLoop - This removes the specified top-level loop from this loop info _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits