add a new callback

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-01-28 03:37:03 +00:00
parent 0aed7840ec
commit 4f16e70faa
2 changed files with 19 additions and 5 deletions

View File

@ -368,17 +368,24 @@ public:
LowerFrameReturnAddress(bool isFrameAddr, SDOperand Chain, unsigned Depth,
SelectionDAG &DAG);
/// LowerOperation - For operations that are unsupported by the target, and
/// which are registered to use 'custom' lowering, this callback is invoked.
/// LowerOperation - This callback is invoked for operations that are
/// unsupported by the target, which are registered to use 'custom' lowering,
/// and whose defined values are all legal.
/// If the target has no operations that require custom lowering, it need not
/// implement this. The default implementation of this aborts.
virtual SDOperand LowerOperation(SDOperand Op, SelectionDAG &DAG);
/// CustomPromoteOperation - For operations that are unsupported by the
/// target, are registered to use 'custom' lowering, and whose type needs to
/// be promoted, this callback is invoked.
/// CustomPromoteOperation - This callback is invoked for operations that are
/// unsupported by the target, are registered to use 'custom' lowering, and
/// whose type needs to be promoted.
virtual SDOperand CustomPromoteOperation(SDOperand Op, SelectionDAG &DAG);
/// CustomExpandOperation - This callback is invoked for operations that are
/// unsupported by the target, are registered to use 'custom' lowering, and
/// whose type needs to be expanded.
virtual void CustomExpandOperation(SDOperand Op, SDOperand &Lo, SDOperand &Hi,
SelectionDAG &DAG);
/// getTargetNodeName() - This method returns the name of a target specific
/// DAG node.
virtual const char *getTargetNodeName(unsigned Opcode) const;

View File

@ -1288,6 +1288,13 @@ SDOperand TargetLowering::CustomPromoteOperation(SDOperand Op,
return SDOperand();
}
void TargetLowering::CustomExpandOperation(SDOperand Op, SDOperand &Lo,
SDOperand &Hi, SelectionDAG &DAG) {
assert(0 && "CustomExpandOperation not implemented for this target!");
abort();
return SDOperand();
}
void SelectionDAGLowering::visitFrameReturnAddress(CallInst &I, bool isFrame) {
unsigned Depth = (unsigned)cast<ConstantUInt>(I.getOperand(1))->getValue();
std::pair<SDOperand,SDOperand> Result =