本文整理汇总了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;
}