From c95995576798ff07f82cf85ce6d3c4df1ef6ae69 Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Tue, 5 Feb 2019 17:32:01 -0800 Subject: [PATCH] Remove more than half the stack usage of CFG traversal --- src/llvmir2hll/graphs/cfg/cfg_traversal.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/llvmir2hll/graphs/cfg/cfg_traversal.cpp b/src/llvmir2hll/graphs/cfg/cfg_traversal.cpp index 2c0754171..1422d9487 100644 --- a/src/llvmir2hll/graphs/cfg/cfg_traversal.cpp +++ b/src/llvmir2hll/graphs/cfg/cfg_traversal.cpp @@ -158,7 +158,7 @@ bool CFGTraversal::getCurrRetVal() const { } /** -* @brief A recursive implementation of performTraversal(). +* @brief A non-recursive implementation of performTraversal(). * * @param[in] node Node to be traversed. * @param[in] stmtIter Iterator to a statement in @a node to be checked. @@ -168,7 +168,7 @@ bool CFGTraversal::getCurrRetVal() const { */ bool CFGTraversal::performTraversalImpl(ShPtr node, CFG::stmt_iterator stmtIter) { - if (stmtIter != node->stmt_end()) { + while (stmtIter != node->stmt_end()) { // We're not at the end of the node, so check the statement under // stmtIter. @@ -182,7 +182,7 @@ bool CFGTraversal::performTraversalImpl(ShPtr node, return getCurrRetVal(); } - return performTraversalImpl(node, ++stmtIter); + ++stmtIter; } // We have reached the end of the node, so check node's successors. @@ -190,7 +190,7 @@ bool CFGTraversal::performTraversalImpl(ShPtr node, } /** -* @brief A recursive implementation of performReverseTraversal(). +* @brief A non-recursive implementation of performReverseTraversal(). * * @param[in] node Node to be traversed. * @param[in] stmtRIter Reverse iterator to a statement in @a node to be @@ -202,7 +202,7 @@ bool CFGTraversal::performTraversalImpl(ShPtr node, bool CFGTraversal::performReverseTraversalImpl(ShPtr node, CFG::stmt_reverse_iterator stmtRIter) { - if (stmtRIter != node->stmt_rend()) { + while (stmtRIter != node->stmt_rend()) { // We're not at the start of the node, so check the statement under // stmtRIter. @@ -216,7 +216,7 @@ bool CFGTraversal::performReverseTraversalImpl(ShPtr node, return getCurrRetVal(); } - return performReverseTraversalImpl(node, ++stmtRIter); + ++stmtRIter; } // We have reached the start of the node, so check node's predecessors.