diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-01-06 00:41:43 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-01-06 00:41:43 +0000 |
commit | f35b1c837f7b8fcc1f0962113e38e275dd7db7cb (patch) | |
tree | f9ef6d3f3ff5a2ffa33c432bf8083eed35ab38a6 /llvm/lib/CodeGen | |
parent | 6b037909ff7cc3f757c1062e6e1a1920a473da61 (diff) | |
download | bcm5719-llvm-f35b1c837f7b8fcc1f0962113e38e275dd7db7cb.tar.gz bcm5719-llvm-f35b1c837f7b8fcc1f0962113e38e275dd7db7cb.zip |
Support for custom lowering of ISD::RET.
llvm-svn: 25116
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 3e470f25b6f..e7368f0a0cc 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1302,6 +1302,22 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { break; } } + + MVT::ValueType VT = Node->getValueType(0); + switch (TLI.getOperationAction(Node->getOpcode(), VT)) { + default: assert(0 && "This action is not supported yet!"); + case TargetLowering::Custom: { + SDOperand Tmp = TLI.LowerOperation(Result, DAG); + if (Tmp.Val) { + Result = LegalizeOp(Tmp); + break; + } + // FALLTHROUGH if the target thinks it is legal. + } + case TargetLowering::Legal: + // Nothing to do. + break; + } break; case ISD::STORE: { Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain. |