From 210f77d2c32f14d2e99577fd3c9842bb19d47e50 Mon Sep 17 00:00:00 2001 From: Tuowen Zhao Date: Mon, 19 Sep 2016 21:14:58 +0000 Subject: Moved most modules into lib --- src/ir_rose_utils.cc | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/ir_rose_utils.cc (limited to 'src/ir_rose_utils.cc') diff --git a/src/ir_rose_utils.cc b/src/ir_rose_utils.cc new file mode 100644 index 0000000..64b0891 --- /dev/null +++ b/src/ir_rose_utils.cc @@ -0,0 +1,67 @@ +/***************************************************************************** + Copyright (C) 2008 University of Southern California + Copyright (C) 2009 University of Utah + All Rights Reserved. + + Purpose: + ROSE interface utilities. + + Notes: + + Update history: + 01/2006 created by Chun Chen +*****************************************************************************/ + +#include "ir_rose_utils.hh" + + + +std::vector find_loops(SgNode *tnl) { + std::vector result; + + SgStatementPtrList& blockStatements = isSgBasicBlock(tnl)->get_statements(); + for(SgStatementPtrList::const_iterator j = blockStatements.begin(); j != blockStatements.end(); j++) + if(isSgForStatement(*j)) + result.push_back(isSgForStatement(*j)); + + return result; +} + +std::vector find_deepest_loops(SgStatementPtrList& tnl) { + + std::vector loops; + + + + for(SgStatementPtrList::const_iterator j = tnl.begin(); j != tnl.end(); j++) + { + std::vector t = find_deepest_loops(isSgNode(*j)); + if (t.size() > loops.size()) + loops = t; + } + + + + return loops; + +} + +std::vector find_deepest_loops(SgNode *tn) { + if (isSgForStatement(tn)) { + std::vector loops; + + SgForStatement *tnf = static_cast(tn); + loops.insert(loops.end(), tnf); + std::vector t = find_deepest_loops(isSgNode(tnf->get_loop_body())); + std::copy(t.begin(), t.end(), std::back_inserter(loops)); + + return loops; + } + else if (isSgBasicBlock(tn)) { + SgBasicBlock *tnb = static_cast(tn); + return find_deepest_loops(tnb->get_statements()); + } + else + return std::vector(); +} + -- cgit v1.2.3-70-g09d2