Beispiel #1
0
void CopyPropagation::doCopyPropagation(void)
{
  std::string CopyStr("");
  RewriteHelper->getExprString(TheCopyExpr, CopyStr);
  ExprSet *ESet = DominatedMap[TheCopyExpr];
  TransAssert(ESet && "Empty Expr Set!");
  for (ExprSet::iterator I = ESet->begin(), E = ESet->end(); I != E; ++I) {
    RewriteHelper->replaceExpr((*I), CopyStr);
  }
}
void AggregateToScalar::doRewrite(void)
{
  ExprSet *TheExprSet = ValidExprs[TheIdx];
  TransAssert(!TheExprSet->empty() && "TheExprSet cannot be empty!");

  ExprSet::iterator I = TheExprSet->begin(), E = TheExprSet->end();
  std::string VarName("");
  createNewVar(*I, VarName);

  for (; I != E; ++I) {
    RewriteHelper->replaceExpr((*I), VarName);
  }
}