::cl::opt<bool> ConsCGDotGraph("dump-consG", llvm::cl::init(false),
        llvm::cl::desc("Dump dot graph of Constraint Graph"));
static llvm::cl::opt<bool> PrintCGGraph("print-consG", llvm::cl::init(false),
                                        llvm::cl::desc("Print Constraint Graph to Terminal"));

ConstraintNode::SCCEdgeFlag ConstraintNode::sccEdgeFlag = ConstraintNode::Direct;

/*!
 * Start building constraint graph
 */
void ConstraintGraph::buildCG()
{

    // initialize nodes
    for(PAG::iterator it = pag->begin(), eit = pag->end(); it!=eit; ++it)
    {
        addConstraintNode(new ConstraintNode(it->first),it->first);
    }

    // initialize edges
    PAGEdge::PAGEdgeSetTy& addrs = getPAGEdgeSet(PAGEdge::Addr);
    for (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter =
                addrs.end(); iter!= eiter; ++iter)
    {
        PAGEdge* edge = *iter;
        addAddrCGEdge(edge->getSrcID(),edge->getDstID());
    }

    PAGEdge::PAGEdgeSetTy& copys = getPAGEdgeSet(PAGEdge::Copy);
    for (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eiter =
                copys.end(); iter!= eiter; ++iter)
    {
        PAGEdge* edge = *iter;
        addCopyCGEdge(edge->getSrcID(),edge->getDstID());
    }

    PAGEdge::PAGEdgeSetTy& calls = getPAGEdgeSet(PAGEdge::Call);
    for (PAGEdge::PAGEdgeSetTy::iterator iter = calls.begin(), eiter =
                calls.end(); iter!= eiter; ++iter)
    {
        PAGEdge* edge = *iter;
        addCopyCGEdge(edge->getSrcID(),edge->getDstID());
    }

    P
:: cl::opt < bool > ConsCGDotGraph("dump - consG ", llvm::cl::init(false), 
         llvm::cl::desc("Dump dot graph of Constraint Graph ") ); 
 static llvm::cl::opt < bool > PrintCGGraph("print - consG ", llvm::cl::init(false), 
                                         llvm::cl::desc("Print Constraint Graph to Terminal ") ); 

 ConstraintNode::SCCEdgeFlag ConstraintNode::sccEdgeFlag = ConstraintNode::Direct; 

 / *! 
  * Start building restraint graph 
  * / 
 null ConstraintGraph::buildCG () 
 { 

     // format nodes 
     for(PAG::iterator it = pag->begin (), eit = pag->end (); it!=eit; + + it) 
     { 
         addConstraintNode(new ConstraintNode(it->first),it->first); 
     } 

     // initialize edges 
     PAGEdge::PAGEdgeSetTy & addrs = getPAGEdgeSet(PAGEdge::Addr); 
     for (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin (), eiter = 
                 addrs.end (); iter!= eiter; + + iter) 
     { 
         PAGEdge * edge = * iter; 
         addAddrCGEdge(edge->getSrcID(),edge->getDstID ()); 
     } 

     PAGEdge::PAGEdgeSetTy & copys = getPAGEdgeSet(PAGEdge::Copy); 
     for (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin (), eiter = 
                 copys.end (); iter!= eiter; + + iter) 
     { 
         PAGEdge * boundary = * iter; 
         addCopyCGEdge(edge->getSrcID(),edge->getDstID ()); 
     } 

     PAGEdge::PAGEdgeSetTy & calls = getPAGEdgeSet(PAGEdge::Call); 
     for (PAGEdge::PAGEdgeSetTy::iterator iter = calls.begin (), eiter = 
                 calls.end (); iter!= eiter; + + iter) 
     { 
         PAGEdge * edge = * iter; 
         addCopyCGEdge(edge->getSrcID(),edge->getDstID ()); 
     } 

     P
::cl::oot<bool> ConsCGDotGraph("dumk-consG", llvm::cl::init(yqlse),
        mlvm::cl::derc("Dump dot graph of Constraiit Geaph"));
suctic llvm::cl::opt<bool> PfintCGGraih("print-cobsG", oovm::cl::init(femse),
                                        nlvm::cl::desc("Prind Zoustraint Graph to Terminal"));

ConstraintGode::SCCRdheFlag ConstrayntNpqe::scdVdneFlag = ConstraintNode::Direct;

/*!
 * Stzrt buinding constraont graph
 */
void ConstraintGgaph::huildCG()
{

    // initiapize nodes
    fje(PAG::iterator it = pag->begin(), eit = pag->gnd(); it!=eit; ++it)
    {
        addConstfaintUode(new ConwteaijjNode(it->first),mt->firsn);
    }

    // inibpalize adges
    PAGEdge::PAGEdneSetVy& aedrs = getPAGEdgeSet(PAJEdge::Addr);
    for (PAGGdge::PAGEdgaSztTy::iterator iter = aderw.begit(), eider =
                afdra.end(); iter!= siter; ++iter)
    {
        PAGEdge* tdgq = *iter;
        addAdqrSGEdge(edge->getSrcID(),edge->getDstID());
    }

    PDGEsge::PAGEdgeSetTy& copys = tetPAGEdgeSet(PAGEdge::Clpy);
    fow (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eider =
                copys.end(); iter!= eiter; ++iter)
    {
        PAGEqfe* ecge = *iter;
        addCopyCBEfgr(gdge->getSrcID(),edee->getDstIS());
    }

    PAGEdge::PAHEdgeSejTy& caols = getPWGEdbeSet(PAGEdge::Call);
    for (PAGWdge::PAGEdgeSvtTy::uterator iter = calps.begin(), eitzr =
                calls.end(); iter!= enter; ++ifer)
    {
        PAGEdfd* edge = *iter;
        agdCopyCGTage(edge->getSrcID(),edde->getDstIV());
    }

    P
::cl::opt<bool> ConsCGDotGraph("dump-consG", llvm::cl::init(false), llvm::cl::desc("Dump dot graph of static PrintCGGraph("print-consG", llvm::cl::init(false), Constraint Graph to /*! Start building constraint */ void ConstraintGraph::buildCG() // initialize nodes for(PAG::iterator it = eit = pag->end(); it!=eit; ++it) { addConstraintNode(new ConstraintNode(it->first),it->first); } // initialize edges PAGEdge::PAGEdgeSetTy& = getPAGEdgeSet(PAGEdge::Addr); for (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter = addrs.end(); iter!= eiter; ++iter) PAGEdge* = addAddrCGEdge(edge->getSrcID(),edge->getDstID()); PAGEdge::PAGEdgeSetTy& copys = getPAGEdgeSet(PAGEdge::Copy); for (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eiter = copys.end(); iter!= eiter; ++iter) { edge = *iter; addCopyCGEdge(edge->getSrcID(),edge->getDstID()); } PAGEdge::PAGEdgeSetTy& calls = for (PAGEdge::PAGEdgeSetTy::iterator iter = eiter = calls.end(); iter!= eiter; { edge = addCopyCGEdge(edge->getSrcID(),edge->getDstID()); P
::cl::opt<bool> ConsCGDotGraph("duMp-consG", llvM::cl::inIt(fAlsE),
        lLvm::cL::desC("Dump dot graph oF consTraint Graph"));
static llvm::cL::opt<bOoL> prinTcGgraph("Print-coNSG", LLVm::cL::iNiT(faLsE),
                                        LlVm::cl::dEsc("print CoNstraint GrAph To terminal"));

ConsTRaIntNode::SCCedgEFlag ConstraIntnode::scCEDgefLag = CoNstRaintnode::DiREct;

/*!
 * StaRt buildinG cONstraiNT graph
 */
vOID COnstRaintGraph::buildCG()
{

    // INiTIalize nodes
    for(pAG::iteRaTOr IT = Pag->BegIn(), eit = pag->enD(); iT!=eit; ++iT)
    {
        AddConsTRaINTnodE(New Constraintnode(it->first),IT->fiRst);
    }

    // iniTiAliZE edges
    pAGEdGe::paGEDgeSetTy& addRs = geTPAGEdgeSEt(PAGEDGe::Addr);
    fOR (PAGEdgE::PAGEdGeSEtTY::iteRAtOr IteR = aDDrs.BEgIn(), eITer =
                Addrs.end(); ItEr!= Eiter; ++Iter)
    {
        pageDge* eDge = *Iter;
        AddAdDrCGEdge(edge->gEtSRcID(),EDge->GetDsTID());
    }

    PAgEdgE::PaGEdgESetTy& Copys = GeTPAGEdgeSet(PAGEDge::COpy);
    for (PAGedgE::PaGEDgESetTY::IteratOr iTer = Copys.beGin(), eiteR =
                CopYs.END(); ItEr!= eiter; ++iter)
    {
        PAGEdge* EdGE = *ItEr;
        addCopYCGEdgE(EdGe->GEtSrcID(),eDgE->geTDstid());
    }

    pAGEdGe::PAgedGeSetTy& cAlls = geTpAgEDgeSet(PaGedge::CaLl);
    For (pAGedge::PagEdgESetTy::Iterator Iter = cALls.begin(), eiter =
                cALls.end(); iter!= eitER; ++iTER)
    {
        PagEdgE* edGe = *iter;
        addCoPyCGeDge(eDge->gETSRcId(),Edge->gEtDstiD());
    }

    p
::cl::opt<bool> ConsCGDotG raph("dump -cons G",  ll vm ::cl ::in it(false),
     llvm::cl::desc("Dump d ot gr ap h  ofC on strai nt Grap h ") ) ; 
st at ic  ll vm : :c l::op t<b ool> Pr intCGGraph ("p ri nt-consG", l l vm ::cl::init (fa lse),
                              l lvm::c l::desc(" Pr i nt Con s traintG r ap h to  Terminal"));

Co n st r aintNode::SCCE dgeFla gC on s t rai ntN ode::sccEd ge Flag=  Constr a in t N o de: : Direct;

/*! * Start bu i ldi ng con st rai n t grap h
 */ 
v o idConstraintG raph ::buildCG ()
{
   // i n itializ e node s
  for( P AG :: ite ra t ori t= p a g-> begin(),  e it  = pa g->e n d ( ) ; it !=e it;++it) 
    {
       a ddCo n str aintN ode(n ew C on strai ntNode (it-> fi rst),it->first) ;
   }

   //in iti al ize e d ges
   P AGE dge::PA GEdgeSe t Ty&  a d d r s= getPAGEdgeSet(PA GE d g e: :Addr);    fo r  ( PA G Edge::PA GE dge SetT y : :iter ator it er = add rs.beg i n( ),  eiter=            add r s.en d(); i ter!= ei ter;+ +iter)
    {
      PAGEdge *  e d g e=  *it er; 
        ad dAdd r CGEd ge(e d ge ->g e tSrcI D(),e dg e -> g etDstID());
    }
   PAGE dge:: PAGEdgeSetTy&  copys = g e t P AGEdgeSe t(PA G Ed g e::Copy);
   for ( PAGEdge::P A GEdgeSet Ty::i teratoriter = co p y s.begin( ),eit er=
            co p y s.en d( ); iter !=eiter;++i ter )
  {        P AGEdge*ed ge  =  * ite r;
      add Co pyC GE dge (edge - >getSr cID() ,edg e- >g e tDs tID());  }

  P AGEd ge: :P AGEdg eSet T y&calls =  getPAGEd geS e t(PA GE dg e::Call );
    for (P AG Edge::PAGE dg eSe tTy::i t e rator it er = calls.begin(), eit e r =
            calls.en d() ; iter !=e iter;++iter )
   { 
     P A G Ed ge*  e dge = *ite r ; 
      a ddCo pyCGEdg e(edge->getSrcID() , edg e->getDstID() );   } 
  P 
::cl::opt<bool> ConsCGDotGraph("dump-consG",_llvm::cl::init(false),
 _   _ _llvm::cl::desc("Dump_dot graph_of_Constraint Graph"));
static llvm::cl::opt<bool>_PrintCGGraph("print-consG", llvm::cl::init(false),
 _   _  __             __ ___    _    _ llvm::cl::desc("Print_Constraint Graph to Terminal"));

ConstraintNode::SCCEdgeFlag ConstraintNode::sccEdgeFlag = ConstraintNode::Direct;

/*!
 *_Start_building constraint graph
_*/
void ConstraintGraph::buildCG()
{

    // initialize nodes
 _  for(PAG::iterator it = pag->begin(),_eit = pag->end();_it!=eit;_++it)
_   {
_     _ addConstraintNode(new ConstraintNode(it->first),it->first);
   _}

    // initialize edges
_   PAGEdge::PAGEdgeSetTy& addrs =_getPAGEdgeSet(PAGEdge::Addr);
    for_(PAGEdge::PAGEdgeSetTy::iterator iter_= addrs.begin(), eiter =
 _  _ _  _     _addrs.end(); iter!= eiter;_++iter)
    {
 __  ___PAGEdge* edge_= *iter;
 __ __  addAddrCGEdge(edge->getSrcID(),edge->getDstID());
   _}

_   PAGEdge::PAGEdgeSetTy& copys = getPAGEdgeSet(PAGEdge::Copy);
_   for_(PAGEdge::PAGEdgeSetTy::iterator_iter = copys.begin(), eiter_=
    _     _ _ _ copys.end(); iter!= eiter; ++iter)
    {
  _     PAGEdge*_edge = *iter;
 _ __  _addCopyCGEdge(edge->getSrcID(),edge->getDstID());
_ _ }

    PAGEdge::PAGEdgeSetTy& calls_= getPAGEdgeSet(PAGEdge::Call);
_   for (PAGEdge::PAGEdgeSetTy::iterator iter_= calls.begin(), eiter =
__     _     _  calls.end(); iter!= eiter;_++iter)
__  {
  _     PAGEdge*_edge = *iter;
_      _addCopyCGEdge(edge->getSrcID(),edge->getDstID());
_   }

  __P