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