diff options
author | Dan Gohman <gohman@apple.com> | 2008-08-23 02:25:05 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-08-23 02:25:05 +0000 |
commit | f350b277f32d7d47f86c0e54f4aec4d470500618 (patch) | |
tree | 7fd5f490b6220846cd2de9eb7a8f48c0d29ea9c5 /lib/Target/Alpha/AlphaISelDAGToDAG.cpp | |
parent | 6679906d9724868bf2198e04952ba42f31d7b7fe (diff) | |
download | external_llvm-f350b277f32d7d47f86c0e54f4aec4d470500618.zip external_llvm-f350b277f32d7d47f86c0e54f4aec4d470500618.tar.gz external_llvm-f350b277f32d7d47f86c0e54f4aec4d470500618.tar.bz2 |
Move the point at which FastISel taps into the SelectionDAGISel
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.
Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.
To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Alpha/AlphaISelDAGToDAG.cpp')
-rw-r--r-- | lib/Target/Alpha/AlphaISelDAGToDAG.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp index 0ff735d..ce6afc3 100644 --- a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp +++ b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp @@ -163,7 +163,7 @@ namespace { /// InstructionSelect - This callback is invoked by /// SelectionDAGISel when it has created a SelectionDAG for us to codegen. - virtual void InstructionSelect(SelectionDAG &DAG); + virtual void InstructionSelect(); virtual const char *getPassName() const { return "Alpha DAG->DAG Pattern Instruction Selection"; @@ -173,8 +173,7 @@ namespace { /// inline asm expressions. virtual bool SelectInlineAsmMemoryOperand(const SDValue &Op, char ConstraintCode, - std::vector<SDValue> &OutOps, - SelectionDAG &DAG) { + std::vector<SDValue> &OutOps) { SDValue Op0; switch (ConstraintCode) { default: return true; @@ -232,12 +231,12 @@ SDValue AlphaDAGToDAGISel::getGlobalRetAddr() { /// InstructionSelect - This callback is invoked by /// SelectionDAGISel when it has created a SelectionDAG for us to codegen. -void AlphaDAGToDAGISel::InstructionSelect(SelectionDAG &DAG) { +void AlphaDAGToDAGISel::InstructionSelect() { DEBUG(BB->dump()); // Select target instructions for the DAG. SelectRoot(); - DAG.RemoveDeadNodes(); + CurDAG->RemoveDeadNodes(); } // Select - Convert the specified operand from a target-independent to a |