aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-12-01 03:01:39 +0000
committerOwen Anderson <resistor@mac.com>2007-12-01 03:01:39 +0000
commit528b00adc44ae1f8dfd78cf95853014c6ef341a1 (patch)
tree200d9f15b49b1d83b5c5364b1addad067f16e775 /include
parente62f97c094dba44e4c259d20135167fa91912eea (diff)
downloadexternal_llvm-528b00adc44ae1f8dfd78cf95853014c6ef341a1.zip
external_llvm-528b00adc44ae1f8dfd78cf95853014c6ef341a1.tar.gz
external_llvm-528b00adc44ae1f8dfd78cf95853014c6ef341a1.tar.bz2
Fixes for MachineLoopInfo, mostly from Evan. With these, it should be almost useable!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44480 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Analysis/LoopInfo.h10
-rw-r--r--include/llvm/CodeGen/MachineLoopInfo.h15
2 files changed, 10 insertions, 15 deletions
diff --git a/include/llvm/Analysis/LoopInfo.h b/include/llvm/Analysis/LoopInfo.h
index dd66c18..0c912d4 100644
--- a/include/llvm/Analysis/LoopInfo.h
+++ b/include/llvm/Analysis/LoopInfo.h
@@ -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());
diff --git a/include/llvm/CodeGen/MachineLoopInfo.h b/include/llvm/CodeGen/MachineLoopInfo.h
index 1f6b1a1..6f1dd86 100644
--- a/include/llvm/CodeGen/MachineLoopInfo.h
+++ b/include/llvm/CodeGen/MachineLoopInfo.h
@@ -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 @@ 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