Re-apply the memory operand changes, with a fix for the static

initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2008-02-06 22:27:42 +00:00
parent b745e88bf0
commit 69de1932b3
21 changed files with 595 additions and 157 deletions

View File

@@ -279,6 +279,7 @@ namespace llvm {
if (isa<ConstantPoolSDNode>(Node)) return true;
if (isa<JumpTableSDNode>(Node)) return true;
if (isa<ExternalSymbolSDNode>(Node)) return true;
if (isa<MemOperandSDNode>(Node)) return true;
return false;
}
@@ -312,11 +313,15 @@ namespace llvm {
/// (which do not go into the machine instrs.)
static unsigned CountResults(SDNode *Node);
/// CountOperands The inputs to target nodes have any actual inputs first,
/// followed by an optional chain operand, then flag operands. Compute the
/// number of actual operands that will go into the machine instr.
/// CountOperands - The inputs to target nodes have any actual inputs first,
/// followed by optional memory operands chain operand, then flag operands.
/// Compute the number of actual operands that will go into the machine
/// instr.
static unsigned CountOperands(SDNode *Node);
/// CountMemOperands - Find the index of the last MemOperandSDNode
static unsigned CountMemOperands(SDNode *Node);
/// EmitNode - Generate machine code for an node and needed dependencies.
/// VRBaseMap contains, for each already emitted node, the first virtual
/// register number for the results of the node.
@@ -357,6 +362,8 @@ namespace llvm {
void AddOperand(MachineInstr *MI, SDOperand Op, unsigned IIOpNum,
const TargetInstrDesc *II,
DenseMap<SDOperand, unsigned> &VRBaseMap);
void AddMemOperand(MachineInstr *MI, const MemOperand &MO);
};
/// createBURRListDAGScheduler - This creates a bottom up register usage