case XPR_TOK:
case XPR_FTDEFAULT:
case XPR_DEFAULT:
- case XPR_SWITCH:
+ // case XPR_SWITCH:
case XPR_FTCASE:
case XPR_CASE:
// case XPR_INIT:
{
if (exprNode_isError (e) )
return FALSE;
- /*
- e->requiresConstraints = constraintList_makeNew();
- e->ensuresConstraints = constraintList_makeNew();
- e->trueEnsuresConstraints = constraintList_makeNew();
- e->falseEnsuresConstraints = constraintList_makeNew();
- */
if (exprNode_isUnhandled (e) )
{
case XPR_BLOCK:
case XPR_STMT:
case XPR_STMTLIST:
+ case XPR_SWITCH:
return TRUE;
default:
return FALSE;
exprData data;
data = e->edata;
- llassert(FALSE);
- //DPRINTF (( message ("doSwitch for: switch (%s) %s",
- // exprNode_unparse (exprData_getPairA (data)),
- // exprNode_unparse (exprData_getPairB (data))) ));
-
+ // llassert(FALSE);
+ DPRINTF (( message ("doSwitch for: switch (%s) %s",
+ exprNode_unparse (exprData_getPairA (data)),
+ exprNode_unparse (exprData_getPairB (data))) ));
+
body = exprData_getPairB (data);
- // exprNode_generateConstraints(body);
+ exprNode_generateConstraints(body);
+
+ constraintList_free(e->requiresConstraints);
+ constraintList_free(e->ensuresConstraints);
- // e->requiresConstraints = constraintList_copy ( body->requiresConstraints );
- //e->ensuresConstraints = constraintList_copy ( body->ensuresConstraints );
+ e->requiresConstraints = NULL;
+ e->ensuresConstraints = NULL;
+
+ e->requiresConstraints = constraintList_copy ( body->requiresConstraints );
+ e->ensuresConstraints = constraintList_copy ( body->ensuresConstraints );
return e;
}
tempList = constraintList_addList (tempList, t2->falseEnsuresConstraints);
temp = tempList;
tempList = constraintList_logicalOr (tempList, t1->falseEnsuresConstraints);
- constraintList_free(temp);
-
- e->falseEnsuresConstraints =constraintList_addList(e->falseEnsuresConstraints, tempList);
-
+ constraintList_free (temp);
+
+ /* evans - was constraintList_addList - memory leak detected by lclint */
+ e->falseEnsuresConstraints =constraintList_addListFree (e->falseEnsuresConstraints, tempList);
}
else if (lltok_isOr_Op (tok) )
{
tempList = constraintList_logicalOr (tempList, t1->trueEnsuresConstraints);
constraintList_free(temp);
-
- e->trueEnsuresConstraints =constraintList_addListFree(e->trueEnsuresConstraints, tempList);
+ e->trueEnsuresConstraints = constraintList_addListFree(e->trueEnsuresConstraints, tempList);
tempList = constraintList_undefined;
-
-
}
else
{
DPRINTF((message("%s is not a boolean operation", lltok_unparse(tok) ) ));
- }
-
+ }
}
void exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, /*@observer@*/ /*@temp@*/ fileloc sequencePoint)
exprData data;
constraintList ret;
- if (exprNode_handleError (e))
- {
- ret = constraintList_makeNew();
- return ret;
- }
+ if (exprNode_handleError (e))
+ {
+ ret = constraintList_makeNew();
+ return ret;
+ }
ret = constraintList_copy (e->trueEnsuresConstraints );
- handledExprNode = TRUE;
+ handledExprNode = TRUE;
data = e->edata;
ret = constraintList_addListFree (ret, exprNode_traversTrueEnsuresConstraints
(exprData_getUopNode (data) ) );
break;
+
+ case XPR_INIT:
+ ret = constraintList_addListFree (ret,
+ exprNode_traversTrueEnsuresConstraints
+ (exprData_getInitNode (data) ) );
+ break;
+
+
case XPR_ASSIGN:
ret = constraintList_addListFree (ret,
exprNode_traversTrueEnsuresConstraints
ret = constraintList_addListFree (ret, exprNode_traversFalseEnsuresConstraints
(exprData_getUopNode (data) ) );
break;
+ case XPR_INIT:
+ ret = constraintList_addListFree (ret,
+ exprNode_traversFalseEnsuresConstraints
+ ( exprData_getInitNode (data) ) );
+ break;
+
case XPR_ASSIGN:
ret = constraintList_addListFree (ret,
exprNode_traversFalseEnsuresConstraints
ret = constraintList_addListFree (ret, exprNode_traversRequiresConstraints
(exprData_getUopNode (data) ) );
break;
+ case XPR_INIT:
+ ret = constraintList_addListFree (ret,
+ exprNode_traversRequiresConstraints
+ (exprData_getInitNode (data) ) );
+ break;
+
case XPR_ASSIGN:
ret = constraintList_addListFree (ret,
exprNode_traversRequiresConstraints
ret = constraintList_addListFree (ret, exprNode_traversEnsuresConstraints
(exprData_getUopNode (data) ) );
break;
+
+ case XPR_INIT:
+ ret = constraintList_addListFree (ret,
+ exprNode_traversEnsuresConstraints
+ (exprData_getInitNode (data) ) );
+ break;
+
+
case XPR_ASSIGN:
ret = constraintList_addListFree (ret,
exprNode_traversEnsuresConstraints