void addcalledge(callnodeptr fromcn, callnodeptr tocn){ KEY *k1; SM_AllocateStruct(smKey, k1); k1->goal = tocn->id; // #ifdef INCR_DEBUG // printf("%d-->%d",fromcn->id,tocn->id); // #endif if (NULL == search_some(fromcn->outedges->hasht,k1)) { insert_some(fromcn->outedges->hasht,k1,tocn); #ifdef INCR_DEBUG printf("Inedges of %d = ",tocn->id); temp=tocn->inedges; while(temp!=NULL){ printf("\t%d",temp->inedge_node->callnode->id); temp=temp->next; } printf("\n"); #endif add_calledge(&(tocn->inedges),fromcn->outedges); call_edge_count_gl++; fromcn->outcount++; #ifdef INCR_DEBUG if(IsNonNULL(fromcn->goal)){ sfPrintGoal(stdout,(VariantSF)fromcn->goal,NO);printf("(%d)",fromcn->id); }else printf("(%d)",fromcn->id); if(IsNonNULL(tocn->goal)){ printf("-->"); sfPrintGoal(stdout,(VariantSF)tocn->goal,NO);printf("(%d)",tocn->id); } printf("\n"); #endif } #ifdef INCR_DEBUG printf("Inedges of %d = ",tocn->id); temp=tocn->inedges; while(temp!=NULL){ printf("\t%d",temp->inedge_node->callnode->id); temp=temp->next; } printf("\n---------------------------------\n"); #endif }
/* Printing Subsumed Calls ----------------------- */ void sfPrintConsGoals(FILE *fp, SubProdSF pProd) { SubConsSF pCons; fprintf(fp, "Producer:\n "); sfPrintGoal(fp, (VariantSF)pProd, YES); fprintf(fp, "\nConsumers:\n"); for ( pCons = subg_consumers(pProd); IsNonNULL(pCons); pCons = conssf_consumers(pCons) ) { fprintf(fp, " "); sfPrintGoal(fp, (VariantSF)pCons, YES); fprintf(fp, "\n"); } }
void printcall(callnodeptr c){ // printf("%d",c->id); if(IsNonNULL(c->goal)) sfPrintGoal(stdout,c->goal,NO); else printf("fact"); return; }