X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FBackend%2Fconstraint.cc;h=d69e1946a7effc46cd90f3a79a428e0ee4d909de;hp=45f2c5f275465e7d187fa4a0289f7c14a6af9038;hb=dd394251eb1578f17507f5da84791113e1e9cef7;hpb=cded0761f9debbceab093dcfc58682e129f95fc9;ds=sidebyside diff --git a/src/Backend/constraint.cc b/src/Backend/constraint.cc old mode 100644 new mode 100755 index 45f2c5f..d69e194 --- a/src/Backend/constraint.cc +++ b/src/Backend/constraint.cc @@ -192,13 +192,24 @@ Edge createNode(NodeType type, uint numEdges, Edge *edges) { } Edge constraintOR(CNF *cnf, uint numEdges, Edge *edges) { - Edge edgearray[numEdges]; + if (numEdges < 200000) { + Edge edgearray[numEdges]; - for (uint i = 0; i < numEdges; i++) { - edgearray[i] = constraintNegate(edges[i]); + for (uint i = 0; i < numEdges; i++) { + edgearray[i] = constraintNegate(edges[i]); + } + Edge eand = constraintAND(cnf, numEdges, edgearray); + return constraintNegate(eand); + } else { + Edge * edgearray=(Edge *)ourmalloc(numEdges*sizeof(Edge)); + + for (uint i = 0; i < numEdges; i++) { + edgearray[i] = constraintNegate(edges[i]); + } + Edge eand = constraintAND(cnf, numEdges, edgearray); + ourfree(edgearray); + return constraintNegate(eand); } - Edge eand = constraintAND(cnf, numEdges, edgearray); - return constraintNegate(eand); } Edge constraintOR2(CNF *cnf, Edge left, Edge right) {