#include <iosfwd>
namespace llvm {
+ class MachineFunction;
// ilist_traits
template <>
-class ilist_traits<MachineInstr>
-{
+class ilist_traits<MachineInstr> {
// this is only set by the MachineBasicBlock owning the ilist
friend class MachineBasicBlock;
MachineBasicBlock* parent;
/// corresponded to originally.
///
const BasicBlock *getBasicBlock() const { return BB; }
-
+
+ /// getParent - Return the MachineFunction containing this basic block.
+ ///
+ const MachineFunction *getParent() const;
+
typedef ilist<MachineInstr>::iterator iterator;
typedef ilist<MachineInstr>::const_iterator const_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
//===----------------------------------------------------------------------===//
#include "llvm/CodeGen/MachineBasicBlock.h"
-
#include "llvm/BasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "Support/LeakDetector.h"
-#include <iostream>
-
using namespace llvm;
+const MachineFunction *MachineBasicBlock::getParent() const {
+ // Get the parent by getting the Function parent of the basic block, and
+ // getting the MachineFunction from it.
+ return &MachineFunction::get(getBasicBlock()->getParent());
+}
+
+
MachineInstr* ilist_traits<MachineInstr>::createNode()
{
MachineInstr* dummy = new MachineInstr(0, 0);