Fixes for MachineLoopInfo, mostly from Evan. With these, it should be almost useable!
authorOwen Anderson <resistor@mac.com>
Sat, 1 Dec 2007 03:01:39 +0000 (03:01 +0000)
committerOwen Anderson <resistor@mac.com>
Sat, 1 Dec 2007 03:01:39 +0000 (03:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44480 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/LoopInfo.h
include/llvm/CodeGen/MachineLoopInfo.h

index dd66c1801f212dff7c4089b79f7621b0e2287503..0c912d429a4ad9f3d1bf1d525fb634227fa20483 100644 (file)
@@ -141,7 +141,7 @@ public:
 
   /// 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 @@ public:
   /// 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 @@ public:
   /// 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 @@ public:
   /// 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 @@ public:
   }
   
   /// 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());
index 1f6b1a1a7bd75338f1ca1b576fb0abc3ce457d66..6f1dd86f7b9199c34031e04383c41e69be38a96b 100644 (file)
 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 @@ LoopBase<MachineBasicBlock>::getCanonicalInductionVariableIncrement() const {
 }
 
 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 @@ public:
 
   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