# include "cgrammar_tokens.h"
# include "exprChecks.h"
-# include "aliasChecks.h"
# include "exprNodeSList.h"
//# include "constraintExpr.h"
-/*@access exprNode @*/
+/*@access exprNode constraintExpr@*/
-static /*@only@*/ constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (/*@only@*/constraintExpr expr, int literal);
+static /*@only@*/ constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (/*@only@*/constraintExpr p_expr, int p_literal);
/*@only@*/ static constraintExpr
-doSRefFixConstraintParamTerm (/*@only@*/ constraintExpr e, /*@temp@*/ /*@observer@*/ exprNodeList arglist) /*@modifies e@*/;
+doSRefFixConstraintParamTerm (/*@only@*/ constraintExpr p_e, /*@temp@*/ /*@observer@*/ exprNodeList p_arglist) /*@modifies p_e@*/;
static /*@only@*/ constraintExpr
-doFixResultTerm (/*@only@*/ constraintExpr e, /*@exposed@*/ exprNode fcnCall)
- /*@modifies e@*/;
+doFixResultTerm (/*@only@*/ constraintExpr p_e, /*@exposed@*/ exprNode p_fcnCall)
+ /*@modifies p_e@*/;
-/*@special@*/ static constraintExpr constraintExpr_makeBinaryOp (void) /*@allocates result->data @*/ /*@sets result->kind @*/;
+ /*@special@*/ static constraintExpr constraintExpr_makeBinaryOp (void) ; /// @allocates result->data @ @sets result->kind @;
//constraintExpr constraintExpr_makeMaxSetConstraintExpr (constraintExpr c);
return expr;
}
-// constraintExpr constraintExpr_propagateConstantsBak (constraintExpr expr,
-// /*@out@*/ bool * propagate,
-// /*@out@*/ int *literal)
-// {
-// constraintExpr expr1;
-// constraintExpr expr2;
-// bool propagate1, propagate2;
-// int literal1, literal2;
-
-// propagate1 = FALSE;
-// propagate2 = FALSE;
-
-// literal1 = 0;
-// literal2 = 0;
-
-// *propagate = FALSE;
-// *literal = 0;
-
-// llassert (expr != NULL);
-
-// // we simplify unaryExpr else where
-// if (expr->kind == unaryExpr)
-// return expr;
-
-// if (expr->kind == term)
-// return expr;
-
-// if (constraintExpr_isLit (expr) )
-// return expr;
-
-// DPRINTF( (message("constraintExpr_propagateConstants: binaryexpr: %s", constraintExpr_unparse(expr) ) ) );
-
-// expr1 = constraintExprData_binaryExprGetExpr1(expr->data);
-// expr2 = constraintExprData_binaryExprGetExpr2(expr->data);
-
-// expr1 = constraintExpr_propagateConstants (expr1, &propagate1, &literal1);
-// expr2 = constraintExpr_propagateConstants (expr2, &propagate2, &literal2);
-
-// expr->data = constraintExprData_binaryExprSetExpr1 (expr->data, expr1);
-// expr->data = constraintExprData_binaryExprSetExpr2 (expr->data, expr2);
-
-// *propagate = propagate1 || propagate2;
-// *literal = literal1 + literal2;
-
-// if ( constraintExpr_isLit (expr1) && constraintExpr_isLit (expr2) )
-// {
-// int t1, t2;
-// t1 = constraintExpr_getValue (expr1);
-// t2 = constraintExpr_getValue (expr2);
-// *propagate = FALSE;
-
-// if (constraintExprData_binaryExprGetOp (expr->data) == PLUS )
-// return (constraintExpr_makeIntLiteral ( (t1+t2) ));
-// else if (constraintExprData_binaryExprGetOp (expr->data) == MINUS)
-// return (constraintExpr_makeIntLiteral ( (t1-t2) ));
-// else
-// llassert(FALSE);
-// }
-
-// if (constraintExpr_isLit (expr1) )
-// {
-// /*@i334*/
-// /*handle MINUS case right */
-// *propagate = TRUE;
-// *literal += constraintExpr_getValue (expr1);
-// /*@-compdef@*/
-// return expr2;
-// /*@=compdef@*/
-// }
-
-// /*@-compdef@*/
-// if (constraintExpr_isLit (expr2) )
-// {
-// *propagate = TRUE;
-
-// if (constraintExprData_binaryExprGetOp (expr->data) == PLUS )
-// *literal += constraintExpr_getValue (expr2);
-// else
-// *literal -= constraintExpr_getValue (expr2);
-// return expr1;
-// }
-
-
-
-
-// DPRINTF( (message("constraintExpr_propagateConstants returning: %s", constraintExpr_unparse(expr) ) ) );
-
-// return expr;
-// /*@=compdef@*/
-// }
-
/*@only@*/ static constraintExpr constraintExpr_combineConstants (/*@only@*/ constraintExpr expr ) /*@modifies expr@*/
{
bool propagate;
}
-/*@only@*/ static constraintExpr oldconstraintExpr_makeTermExprNode (/*@exposed@*/ exprNode e)
+/*@only@*/ static constraintExpr oldconstraintExpr_makeTermExprNode ( /*@dependent@*/ exprNode e)
{
constraintExpr ret;
constraintTerm t;
return ret;
}
-constraintExpr constraintExpr_makeExprNode (/*@exposed@*/ exprNode e)
+constraintExpr constraintExpr_makeExprNode (exprNode e)
{
sRef s;
constraintExpr ret, ce1, ce2;
return oldconstraintExpr_makeTermExprNode(e); //constraintExpr_makeExprNode (e);
}
-constraintExpr constraintExpr_makeTerm (/*@only@*/ constraintTerm t)
+static constraintExpr constraintExpr_makeTerm (/*@only@*/ constraintTerm t)
{
constraintExpr ret;
return ret;
}
-constraintExpr constraintExpr_makeTermsRef ( sRef s)
+constraintExpr constraintExpr_makeTermsRef (/*@temp@*/ sRef s)
{
constraintExpr ret;
constraintTerm t;
/*@only@*/
-static constraintExpr constraintExpr_makeSRefUnaryOp (/*@exposed@*/ sRef s, constraintExprUnaryOpKind op)
+static constraintExpr constraintExpr_makeSRefUnaryOp (/*@temp@*/ /*@observer@*/ sRef s, constraintExprUnaryOpKind op)
{
constraintExpr ret;
constraintExpr t;
}
/*@only@*/
-constraintExpr constraintExpr_makeSRefMaxRead(/*@exposed@*/ sRef s)
+constraintExpr constraintExpr_makeSRefMaxRead( sRef s)
{
return (constraintExpr_makeSRefUnaryOp (s, MAXREAD) );
}
/*@only@*/
-constraintExpr constraintExpr_makeSRefMaxset (/*@exposed@*/ sRef s)
+constraintExpr constraintExpr_makeSRefMaxset ( sRef s)
{
return (constraintExpr_makeSRefUnaryOp (s, MAXSET) );
}
}
/*@only@*/
-/*@unused@*/ constraintExpr constraintExpr_makeMinSetExpr (/*@exposed@*/ exprNode expr)
+/*@unused@*/ static constraintExpr constraintExpr_makeMinSetExpr (/*@exposed@*/ exprNode expr)
{
constraintExpr ret;
ret = constraintExpr_makeUnaryOpExprNode(expr);
}
/*@only@*/
-/*@unused@*/ constraintExpr constraintExpr_makeMinReadExpr (/*@exposed@*/ exprNode expr)
+/*@unused@*/ static constraintExpr constraintExpr_makeMinReadExpr (/*@exposed@*/ exprNode expr)
{
constraintExpr ret;
ret = constraintExpr_makeUnaryOpExprNode(expr);
*/
/*@only@*/
- /*@special@*/ static constraintExpr constraintExpr_makeBinaryOp (void) /*@allocates result->data @*/ /*@sets result->kind @*/
+ /*@special@*/ static constraintExpr constraintExpr_makeBinaryOp (void)
+ /*@allocates result->data @*/ /*@sets result->kind @*/
{
constraintExpr ret;
ret = constraintExpr_alloc();
ret->kind = binaryexpr;
ret->data = dmalloc ( sizeof *(ret->data) );
- ret->data = constraintExprData_binaryExprSetOp (ret->data, BINARYOP_UNDEFINED);
+ // ret->data = constraintExprData_binaryExprSetOp (ret->data, BINARYOP_UNDEFINED);
return ret;
}
}
/*@only@*/
-/*@unused@*/ constraintExpr constraintExpr_makeBinaryOpExprNode (/*@exposed@*/ exprNode expr1, /*@exposed@*/ exprNode expr2)
+/*@unused@*/ static constraintExpr constraintExpr_makeBinaryOpExprNode (/*@exposed@*/ exprNode expr1, /*@exposed@*/ exprNode expr2)
{
constraintExpr ret;
constraintExpr sub1, sub2;
/*@only@*/ constraintExpr constraintExpr_makeSubtractExpr (/*@only@*/ constraintExpr expr, /*@only@*/ constraintExpr addent)
{
- constraintExpr new;
+ constraintExpr ret;
DPRINTF ( (message ("Making subtract expression") ) );
- new = constraintExpr_makeBinaryOpConstraintExpr (expr, addent);
- new->data = constraintExprData_binaryExprSetOp (new->data, MINUS);
- return new;
+ ret = constraintExpr_makeBinaryOpConstraintExpr (expr, addent);
+ ret->data = constraintExprData_binaryExprSetOp (ret->data, MINUS);
+ return ret;
}
/*@only@*/
constraintExpr expr, /*@only@*/
constraintExpr addent)
{
- constraintExpr new;
+ constraintExpr ret;
DPRINTF ( (message ("Doing addTerm simplification") ) );
- new = constraintExpr_makeBinaryOpConstraintExpr (expr, addent);
- new->data = constraintExprData_binaryExprSetOp (new->data, PLUS);
- return new;
+ ret = constraintExpr_makeBinaryOpConstraintExpr (expr, addent);
+ ret->data = constraintExprData_binaryExprSetOp (ret->data, PLUS);
+ return ret;
}
}
-/*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr c, constraintExpr old, constraintExpr new )
+/*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr c, /*@temp@*/ constraintExpr old, /*@temp@*/ constraintExpr newExpr )
{
constraintExprKind kind;
constraintExpr temp;
{
DPRINTF((message ("Replacing %s with %s",
- constraintExpr_unparse(old), constraintExpr_unparse(new)
+ constraintExpr_unparse(old), constraintExpr_unparse(newExpr)
)));
constraintExpr_free(c);
- return constraintExpr_copy (new);
+ return constraintExpr_copy (newExpr);
}
kind = c->kind;
case unaryExpr:
temp = constraintExprData_unaryExprGetExpr (c->data);
temp = constraintExpr_copy(temp);
- temp = constraintExpr_searchandreplace (temp, old, new);
+ temp = constraintExpr_searchandreplace (temp, old, newExpr);
c->data = constraintExprData_unaryExprSetExpr (c->data, temp);
break;
case binaryexpr:
temp = constraintExprData_binaryExprGetExpr1 (c->data);
temp = constraintExpr_copy(temp);
- temp = constraintExpr_searchandreplace (temp, old, new);
+ temp = constraintExpr_searchandreplace (temp, old, newExpr);
c->data = constraintExprData_binaryExprSetExpr1 (c->data, temp);
temp = constraintExprData_binaryExprGetExpr2 (c->data);
temp = constraintExpr_copy(temp);
- temp = constraintExpr_searchandreplace (temp, old, new);
+ temp = constraintExpr_searchandreplace (temp, old, newExpr);
c->data = constraintExprData_binaryExprSetExpr2 (c->data, temp);
break;
default:
}
-constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr c, fileloc loc) /*@modifies c->data @*/
+constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr c, fileloc loc) /*@modifies c @*/
{
constraintTerm t;
constraintExpr temp;
expr1 = constraintExpr_copy(expr1);
expr2 = constraintExpr_copy(expr2);
-#warning make sure this works
+//drl possible problem : warning make sure this works
lexpr->kind = expr1->kind;
free (lexpr->data);
lexpr->data = copyExprData (expr1->data, expr1->kind);
- free(expr1);
+ constraintExpr_free(expr1);
if (op == PLUS)
expr = constraintExpr_makeSubtractExpr (expr, expr2);
{
constraintExpr temp;
- temp = constraintExpr_makeIntLiteral ((int)strlen (val) );
+ temp = constraintExpr_makeIntLiteral ((int)strlen (cstring_toCharsSafe(val) ) );
cstring_free(val);
constraintExpr_free(c);
return temp;
{
constraintExpr temp;
- temp = constraintExpr_makeIntLiteral ((int)strlen (val) );
+ temp = constraintExpr_makeIntLiteral ((int)strlen (cstring_toCharsSafe(val) ) );
cstring_free(val);
constraintExpr_free(c);
return temp;
return expr;
}
-/*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr expr, exprNode fcnCall)
+/*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr expr, /*@observer@*/ exprNode fcnCall)
{
constraintExprKind kind;
constraintExpr expr1, expr2;
t = constraintExpr_unparse(expr);
- if (strstr (t, "MAXSET") != NULL )
+ if (cstring_containsLit(t, "MAXSET") != NULL )
{
cstring_free(t);
return (TRUE);
llassert(kind == term);
t = constraintExprData_termGetTerm (data);
- llassert (t != NULL);
+ llassert (constraintTerm_isDefined(t) );
ret = e;
switch (constraintTerm_getKind(t) )
llassert(kind == term);
t = constraintExprData_termGetTerm (data);
- llassert (t != NULL);
+ llassert (constraintTerm_isDefined(t) );
ret = e;
/*@i1*/ switch (t->kind)
case SREF:
DPRINTF (( message("Doing sRef_fixConstraintParam for %q ",
constraintTerm_print (t) ) ));
- ret = sRef_fixConstraintParam (t->value.sref, arglist);
+ ret = sRef_fixConstraintParam (constraintTerm_getSRef(t), arglist);
constraintExpr_free(e);
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
- binaryOp = (constraintExprBinaryOpKind) getInt(&str);
+ binaryOp = (constraintExprBinaryOpKind) reader_getInt(&str);
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
- checkChar (&str, 'e');
- checkChar (&str, '1');
+ reader_checkChar (&str, 'e');
+ reader_checkChar (&str, '1');
expr1 = constraintExpr_undump (f);
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
- checkChar (&str, 'e');
- checkChar (&str, '2');
+ reader_checkChar (&str, 'e');
+ reader_checkChar (&str, '2');
expr2 = constraintExpr_undump (f);
os = str;
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
- unaryOp = (constraintExprUnaryOpKind) getInt(&str);
+ unaryOp = (constraintExprUnaryOpKind) reader_getInt(&str);
expr = constraintExpr_undump (f);
s = fgets(os, MAX_DUMP_LINE_LENGTH, f);
- kind = (constraintExprKind) getInt(&s);
+ kind = (constraintExprKind) reader_getInt(&s);
free (os);