From 2608fea7bdcb4800c7e6610cfcfba38ce9374098 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Tue, 11 Jul 2017 17:21:28 -0700 Subject: [PATCH] Traverse entire AST, but only assign encodings once... --- src/Encoders/naiveencoder.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Encoders/naiveencoder.c b/src/Encoders/naiveencoder.c index c3dc425..da6700f 100644 --- a/src/Encoders/naiveencoder.c +++ b/src/Encoders/naiveencoder.c @@ -47,24 +47,22 @@ void naiveEncodingLogicOp(BooleanLogic * This) { } void naiveEncodingPredicate(BooleanPredicate * This) { - FunctionEncoding * encoding = getPredicateFunctionEncoding(This); - if (getFunctionEncodingType(encoding) != FUNC_UNASSIGNED) - return; + FunctionEncoding *encoding = getPredicateFunctionEncoding(This); + if (getFunctionEncodingType(encoding) == FUNC_UNASSIGNED) + setFunctionEncodingType(getPredicateFunctionEncoding(This), ENUMERATEIMPLICATIONS); - setFunctionEncodingType(getPredicateFunctionEncoding(This), ENUMERATEIMPLICATIONS); for(uint i=0; i < getSizeArrayElement(&This->inputs); i++) { - Element * element=getArrayElement(&This->inputs, i); + Element *element=getArrayElement(&This->inputs, i); naiveEncodingElement(element); } } void naiveEncodingElement(Element * This) { ElementEncoding * encoding = getElementEncoding(This); - if (getElementEncodingType(encoding) != ELEM_UNASSIGNED) - return; - - setElementEncodingType(encoding, BINARYINDEX); - baseBinaryIndexElementAssign(encoding); + if (getElementEncodingType(encoding) == ELEM_UNASSIGNED) { + setElementEncodingType(encoding, BINARYINDEX); + baseBinaryIndexElementAssign(encoding); + } if(GETELEMENTTYPE(This) == ELEMFUNCRETURN) { ElementFunction *function=(ElementFunction *) This; @@ -72,7 +70,9 @@ void naiveEncodingElement(Element * This) { Element * element=getArrayElement(&function->inputs, i); naiveEncodingElement(element); } - setFunctionEncodingType(getElementFunctionEncoding(function), ENUMERATEIMPLICATIONS); + FunctionEncoding *encoding = getElementFunctionEncoding(function); + if (getFunctionEncodingType(encoding) == FUNC_UNASSIGNED) + setFunctionEncodingType(getElementFunctionEncoding(function), ENUMERATEIMPLICATIONS); } } -- 2.34.1