当前位置: 首页>>代码示例>>C++>>正文


C++ Node::containsCall方法代码示例

本文整理汇总了C++中tr::Node::containsCall方法的典型用法代码示例。如果您正苦于以下问题:C++ Node::containsCall方法的具体用法?C++ Node::containsCall怎么用?C++ Node::containsCall使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tr::Node的用法示例。


在下文中一共展示了Node::containsCall方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: countSupportedNodes

// Counts nodes that involved in PRE that are not stores or checks.
// These nodes require temps.
//
bool TR_LocalAnalysisInfo::countSupportedNodes(TR::Node *node, TR::Node *parent, bool &containsCallInStoreLhs)
   {
   if (_visitCount == node->getVisitCount())
      {
      return false;
      }

   node->setVisitCount(_visitCount);
   node->setContainsCall(false);

   if (isCallLike(node))
      {
      node->setContainsCall(true);
      // would return here
      }

   bool flag = false;
   TR::ILOpCode &opCode = node->getOpCode();
   int n = node->getNumChildren();

   int32_t i;
   for (i = 0; i < n; i++)
      {
      TR::Node *child = node->getChild(i);
      bool childHasCallsInStoreLhs = false;
      if (countSupportedNodes(child, node, childHasCallsInStoreLhs))
         flag = true;

      if (childHasCallsInStoreLhs)
         containsCallInStoreLhs = true;

      if (child->containsCall())
         {
         if (node->getOpCode().isStoreIndirect() && (i == 0))
            containsCallInStoreLhs = true;
         node->setContainsCall(true);
         }
      }

   if (TR_LocalAnalysis::isSupportedNode(node, _compilation, parent))
      {
      int oldExpressionOnRhs = hasOldExpressionOnRhs(node, false, containsCallInStoreLhs);

      if (oldExpressionOnRhs == -1)
         {
         if (trace())
            {
            traceMsg(comp(), "\nExpression #%d is : \n",_numNodes);
            _compilation->getDebug()->print(_compilation->getOutFile(), node, 6, true);
            }

         flag = true;
         node->setLocalIndex(_numNodes);
         _numNodes++;
         }
      else
        node->setLocalIndex(oldExpressionOnRhs);
      }
   else
      node->setLocalIndex(-1);

   return flag;
   }
开发者ID:jduimovich,项目名称:omr,代码行数:66,代码来源:LocalAnalysis.cpp


注:本文中的tr::Node::containsCall方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。