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!");
}
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;
}
-EXTERN_TEMPLATE_INSTANTIATION(class LoopBase<MachineBasicBlock>);
-EXTERN_TEMPLATE_INSTANTIATION(class LoopInfoBase<MachineBasicBlock>);
-
typedef LoopBase<MachineBasicBlock> MachineLoop;
class MachineLoopInfo : public MachineFunctionPass {
/// runOnFunction - Calculate the natural loop information.
///
virtual bool runOnMachineFunction(MachineFunction &F);
-
- bool runOnFunction(Function& F) { return false; }
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
// Make sure that any clients of this file link in LoopInfo.cpp
FORCE_DEFINING_FILE_TO_BE_LINKED(MachineLoopInfo)
-#endif
\ No newline at end of file
+#endif