Add support for truncating integer casts from long.

llvm-svn: 19358
This commit is contained in:
Chris Lattner 2005-01-07 22:37:48 +00:00
parent ea4ca94cae
commit a65a2f0c36
1 changed files with 13 additions and 1 deletions

View File

@ -556,8 +556,20 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
if (Tmp1 != Node->getOperand(0))
Result = DAG.getNode(Node->getOpcode(), Node->getValueType(0), Tmp1);
break;
case Expand:
// In the expand case, we must be dealing with a truncate, because
// otherwise the result would be larger than the source.
assert(Node->getOpcode() == ISD::TRUNCATE &&
"Shouldn't need to expand other operators here!");
ExpandOp(Node->getOperand(0), Tmp1, Tmp2);
// Since the result is legal, we should just be able to truncate the low
// part of the source.
Result = DAG.getNode(ISD::TRUNCATE, Node->getValueType(0), Tmp1);
break;
default:
assert(0 && "Do not know how to expand or promote this yet!");
assert(0 && "Do not know how to promote this yet!");
}
break;
}