From: Stuart Hastings Date: Tue, 21 Dec 2010 17:07:24 +0000 (+0000) Subject: Missing logic for nested CALLSEQ_START/END. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2965e69e040d86002128b91a439eb9bfc6b83df1;p=oota-llvm.git Missing logic for nested CALLSEQ_START/END. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122342 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 661a7ad6d87..a60b8719372 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -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