Missing logic for nested CALLSEQ_START/END.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122342 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Stuart Hastings 2010-12-21 17:07:24 +00:00
parent 4d75d80d62
commit 2965e69e04

View File

@ -255,8 +255,11 @@ void SelectionDAGLegalize::LegalizeDAG() {
static SDNode *FindCallEndFromCallStart(SDNode *Node, int depth = 0) {
if (Node->getOpcode() == ISD::CALLSEQ_START)
depth++;
if ((Node->getOpcode() == ISD::CALLSEQ_END) && (depth == 1))
return Node;
else if (Node->getOpcode() == ISD::CALLSEQ_END) {
depth--;
if (depth == 0)
return Node;
}
if (Node->use_empty())
return 0; // No CallSeqEnd