summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-04-11 02:00:08 +0000
committerChris Lattner <sabre@nondot.org>2006-04-11 02:00:08 +0000
commit6cf3bbbe1759db87bdd88e4a97637d58e1c581b4 (patch)
treebb9f19d15cc0833959701201b639b90c101aa6aa /llvm/lib/CodeGen
parente4db08a2f10dfcf572045fea168bee521c412aaf (diff)
downloadbcm5719-llvm-6cf3bbbe1759db87bdd88e4a97637d58e1c581b4.tar.gz
bcm5719-llvm-6cf3bbbe1759db87bdd88e4a97637d58e1c581b4.zip
add some todos
llvm-svn: 27580
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 0bb6dd0301f..9c5c9643327 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/llvm/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);
OpenPOWER on IntegriCloud