Changeset: 9b5e9ad27c5b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9b5e9ad27c5b
Modified Files:
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_dataflow.h
Branch: default
Log Message:

Remove unused function.
We should not attempt to revert optimizer steps.
It is better to pre-analyse and ignore the step.


diffs (157 lines):

diff --git a/monetdb5/optimizer/opt_dataflow.c 
b/monetdb5/optimizer/opt_dataflow.c
--- a/monetdb5/optimizer/opt_dataflow.c
+++ b/monetdb5/optimizer/opt_dataflow.c
@@ -58,74 +58,6 @@ simpleFlow(InstrPtr *old, int start, int
        return simple;
 }
 
-/* optimizers may remove the dataflow and language.pass hints first */
-void removeDataflow(MalBlkPtr mb)
-{
-       int i, k, flowblock=0, limit;
-       InstrPtr p, *old;
-       int *init= GDKzalloc(mb->vtop * sizeof(int)), skip = 0;
-       char *delete= (char*) GDKzalloc(mb->stop);
-       char *used= (char*) GDKzalloc(mb->vtop);
-
-       if ( delete == 0 || init == 0 || used == 0){
-               if( delete) GDKfree(delete);
-               if( used) GDKfree(used);
-               if( init) GDKfree(init);
-               return;
-       }
-       old = mb->stmt;
-       limit = mb->stop;
-       if ( newMalBlkStmt(mb, mb->ssize) <0 ){
-               GDKfree(delete);
-               GDKfree(used);
-               GDKfree(init);
-               return;
-       }
-       /* remove the inlined dataflow barriers */
-       for (i = 1; i<limit; i++) {
-               p = old[i];
-
-               if (blockStart(p) ){
-                       if ( getModuleId(p) == languageRef &&
-                               getFunctionId(p) == dataflowRef){
-                               flowblock = getArg(p,0);
-                               delete[i] = 1;
-                       } else skip++;
-               } else 
-               if (blockExit(p) ){
-                       if ( skip )
-                               skip--;
-                       else
-                       if ( getArg(p,0) == flowblock) {
-                               flowblock = 0;
-                               delete[i] = 1;
-                       }
-               } else 
-               if ( getModuleId(p) == languageRef &&
-                        getFunctionId(p) == passRef){
-                       delete[i] =1;
-               } else {
-                       /* remember first initialization */
-                       for ( k = p->retc; k < p->argc; k++)
-                               used[getArg(p,k)] = 1;
-                       if ( init[getArg(p,0)]  && ! used[getArg(p,0)]) 
-                               /* remove the old initialization */
-                               delete[ init[getArg(p,0)]] = 1;
-                       init[getArg(p,0)] = i;
-               }
-       }
-       /* remove the superflous variable initializations */
-       /* when there are no auxiliary barrier blocks */
-       for (i = 0; i<limit; i++) 
-               if ( delete[i] == 0 )
-                       pushInstruction(mb,old[i]);
-               else freeInstruction(old[i]);
-       GDKfree(init);
-       GDKfree(old);
-       GDKfree(used);
-       GDKfree(delete);
-}
-
 // take care of side-effects in updates
 static void setAssigned(InstrPtr p, int k, int *assigned){
        if ( isUpdateInstruction(p) || hasSideEffects(p,TRUE))
@@ -214,10 +146,10 @@ OPTdataflowImplementation(Client cntxt, 
        /* inlined functions will get their dataflow control later */
        if ( mb->inlineProp)
                return 0;
-       OPTDEBUGdataflow{
+#ifdef DEBUG_OPT_DATAFLOW
                mnstr_printf(cntxt->fdout,"#dataflow input\n");
                printFunction(cntxt->fdout, mb, 0, LIST_MAL_ALL);
-       }
+#endif
 
        vlimit = mb->vsize;
        eolife= (int*) GDKzalloc(vlimit * sizeof(int));
@@ -238,10 +170,6 @@ OPTdataflowImplementation(Client cntxt, 
                for (j = 0; j < p->argc; j++)
                        eolife[getArg(p,j)]= i;
        }
-       //OPTDEBUGdataflow{
-               //for(i= 0;  i < mb->vtop; i++)
-                       //mnstr_printf(cntxt->fdout,"#eolife %d -> %d\n",i, 
eolife[i]);
-       //}
 
        // make sure we have space for the language.pass operation
        // for all variables within the barrier
@@ -257,10 +185,10 @@ OPTdataflowImplementation(Client cntxt, 
                conflict = 0;
 
                if ( dataflowConflict(cntxt,mb,p) || (conflict = 
dflowAssignConflict(p,i,assigned,eolife)) )  {
-                       OPTDEBUGdataflow{
-                               mnstr_printf(cntxt->fdout,"#conflict %d 
dataflow %d dflowAssignConflict %d\n",i, 
dataflowConflict(cntxt,mb,p),dflowAssignConflict(p,i,assigned,eolife));
-                               printInstruction(cntxt->fdout, mb, 0, p, 
LIST_MAL_ALL);
-                       }
+#ifdef DEBUG_OPT_DATAFLOW
+                       mnstr_printf(cntxt->fdout,"#conflict %d dataflow %d 
dflowAssignConflict %d\n",i, 
dataflowConflict(cntxt,mb,p),dflowAssignConflict(p,i,assigned,eolife));
+                       printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL);
+#endif
                        /* close previous flow block */
                        if ( !(simple = simpleFlow(old,start,i))){
                                for( j=start ; j<i; j++){
@@ -355,14 +283,6 @@ OPTdataflowImplementation(Client cntxt, 
        for (; i<slimit; i++) 
                if (old[i])
                        freeInstruction(old[i]);
-wrapup:
-       if( eolife) GDKfree(eolife);
-       if( init) GDKfree(init);
-       if( used) GDKfree(used);
-       if( sink) GDKfree(sink);
-       if( assigned) GDKfree(assigned);
-       if( old) GDKfree(old);
-
     /* Defense line against incorrect plans */
     if( actions > 0){
         chkTypes(cntxt->fdout, cntxt->nspace, mb, FALSE);
@@ -373,5 +293,13 @@ wrapup:
     snprintf(buf,256,"%-20s actions=%2d time=" LLFMT " 
usec","dataflow",actions,GDKusec() - usec);
     newComment(mb,buf);
 
+wrapup:
+       if( eolife) GDKfree(eolife);
+       if( init) GDKfree(init);
+       if( used) GDKfree(used);
+       if( sink) GDKfree(sink);
+       if( assigned) GDKfree(assigned);
+       if( old) GDKfree(old);
+
        return actions;
 }
diff --git a/monetdb5/optimizer/opt_dataflow.h 
b/monetdb5/optimizer/opt_dataflow.h
--- a/monetdb5/optimizer/opt_dataflow.h
+++ b/monetdb5/optimizer/opt_dataflow.h
@@ -12,7 +12,6 @@
 #include "opt_support.h"
 
 #define OPTDEBUGdataflow  if ( optDebug & ((lng) 1 <<DEBUG_OPT_DATAFLOW) )
-mal_export void removeDataflow(MalBlkPtr mb);
 mal_export int OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr p);
 
 #endif
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to