diff options
author | Chris Lattner <sabre@nondot.org> | 2006-04-11 02:00:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-04-11 02:00:08 +0000 |
commit | b49e52c7e2d828c45583f862c0f7e1a4a2649aca (patch) | |
tree | 4e6dfbb05554ea3ec7f5ba737027ddc6e5ebf991 /lib | |
parent | bee9836c0f21be0bd5034f60caa9594c3949910d (diff) | |
download | external_llvm-b49e52c7e2d828c45583f862c0f7e1a4a2649aca.zip external_llvm-b49e52c7e2d828c45583f862c0f7e1a4a2649aca.tar.gz external_llvm-b49e52c7e2d828c45583f862c0f7e1a4a2649aca.tar.bz2 |
add some todos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27580 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 0bb6dd0..9c5c964 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1427,10 +1427,16 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { // Turn this into a return of the scalar type. Tmp2 = PackVectorOp(Tmp2, EVT); Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp2); + + // FIXME: Returns of gcc generic vectors smaller than a legal type + // should be returned in integer registers! + // The scalarized value type may not be legal, e.g. it might require // promotion or expansion. Relegalize the return. Result = LegalizeOp(Result); } else { + // FIXME: Returns of gcc generic vectors larger than a legal vector + // type should be returned by reference! SDOperand Lo, Hi; SplitVectorOp(Tmp2, Lo, Hi); Result = DAG.getNode(ISD::RET, MVT::Other, Tmp1, Lo, Hi); @@ -1458,6 +1464,8 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { break; case Expand: { SDOperand Lo, Hi; + assert(Node->getOperand(i).getValueType() != MVT::Vector && + "FIXME: TODO: implement returning non-legal vector types!"); ExpandOp(Node->getOperand(i), Lo, Hi); NewValues.push_back(Lo); NewValues.push_back(Hi); |