Make integerencoding a completely separate pass... Fix issue of changing ordersets
[satune.git] / src / ASTTransform / decomposeordertransform.cc
index ec8b0204c3360a3b53980a9a5e0fa97f1507dfba..85b43b12e1d063d9cdcf98e516fb21de1abbf177 100644 (file)
@@ -27,10 +27,10 @@ DecomposeOrderTransform::~DecomposeOrderTransform() {
 }
 
 void DecomposeOrderTransform::doTransform() {
-       Vector<Order *> *orders = solver->getOrders();
-       uint size = orders->getSize();
-       for (uint i = 0; i < size; i++) {
-               Order *order = orders->get(i);
+       HashsetOrder *orders = solver->getActiveOrders()->copy();
+       SetIteratorOrder * orderit=orders->iterator();
+       while(orderit->hasNext()) {
+               Order *order = orderit->next();
 
                if (GETVARTUNABLE(solver->getTuner(), order->type, DECOMPOSEORDER, &onoff) == 0) {
                        continue;
@@ -70,8 +70,11 @@ void DecomposeOrderTransform::doTransform() {
                decomposeOrder(order, graph);
                delete graph;
        }
+       delete orderit;
+       delete orders;
 }
 
+
 void DecomposeOrderTransform::decomposeOrder (Order *currOrder, OrderGraph *currGraph) {
        Vector<Order *> ordervec;
        Vector<Order *> partialcandidatevec;
@@ -122,6 +125,7 @@ void DecomposeOrderTransform::decomposeOrder (Order *currOrder, OrderGraph *curr
                }
        }
        currOrder->setOrderResolver( new DecomposeOrderResolver(currGraph, ordervec) );
+       solver->getActiveOrders()->remove(currOrder);
        uint pcvsize = partialcandidatevec.getSize();
        for (uint i = 0; i < pcvsize; i++) {
                Order *neworder = partialcandidatevec.get(i);