if ( constraintExpr_isLit (expr1) && constraintExpr_isLit (expr2) )
{
- int t1, t2;
+ long t1, t2;
t1 = constraintExpr_getValue (expr1);
t2 = constraintExpr_getValue (expr2);
llassert(*propagate == FALSE);
}
/*@only@*/
-constraintExpr constraintExpr_makeIntLiteral (int i)
+constraintExpr constraintExpr_makeIntLiteral (long i)
{
constraintExpr ret;
constraintTerm t;
if (constraintExpr_canGetValue (e1) && constraintExpr_canGetValue(e2) )
{
- int i;
+ long i;
i = constraintExpr_getValue(e1) + constraintExpr_getValue (e2);
constraintExpr_free(c);
switch (kind)
{
case term:
- st = message ("(%q) ", constraintTerm_print (constraintExprData_termGetTerm(ex->data) ) );
+ st = message ("(%q) ", constraintTerm_print (constraintExprData_termGetTerm (ex->data)));
break;
case unaryExpr:
st = message ("%q (%q)",
cstring constraintExpr_print (constraintExpr expr) /*@*/
{
- return constraintExpr_unparse(expr);
+ return constraintExpr_unparse (expr);
}
bool constraintExpr_hasMaxSet (constraintExpr expr) /*@*/
0 => expr1 == expr2
-1 => expr1 < expr2
*/
+
int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2)
{
- int value1, value2;
+ long value1, value2;
if (constraintExpr_similar (expr1, expr2) )
{
return 0;
}
+
value1 = constraintExpr_getValue(expr1);
value2 = constraintExpr_getValue(expr2);
return -1;
}
-int constraintExpr_getValue (constraintExpr expr)
+long constraintExpr_getValue (constraintExpr expr)
{
llassert (expr->kind == term);
- return (constraintTerm_getValue (constraintExprData_termGetTerm (expr->data) ) );
+ return (constraintTerm_getValue (constraintExprData_termGetTerm (expr->data)));
}
bool constraintExpr_canGetValue (constraintExpr expr)
llassert (constraintTerm_isDefined(t) );
ret = e;
- /*@i1*/ switch (t->kind)
+
+ DPRINTF (("Fixing: %s", constraintExpr_print (e)));
+
+ switch (constraintTerm_getKind(t))
{
case EXPRNODE:
DPRINTF((message ("%q @ %q ", constraintTerm_print(t),
break;
case SREF:
- DPRINTF (( message("Doing sRef_fixConstraintParam for %q ",
- constraintTerm_print (t) ) ));
- ret = sRef_fixConstraintParam (constraintTerm_getSRef(t), arglist);
-
- constraintExpr_free(e);
+ /* evans 2001-07-24: constants should use the original term */
+ if (!constraintTerm_canGetValue (t))
+ {
+ DPRINTF ((message("Doing sRef_fixConstraintParam for %q ",
+ constraintTerm_print (t) ) ));
+ ret = sRef_fixConstraintParam (constraintTerm_getSRef(t), arglist);
+
+ constraintExpr_free (e);
+
+ DPRINTF (( message("After Doing sRef_fixConstraintParam constraintExpr is %q ",
+ constraintExpr_print (ret) ) ));
+ /*@-branchstate@*/
+ } /*@=branchstate@*/
- DPRINTF (( message("After Doing sRef_fixConstraintParam constraintExpr is %q ",
- constraintExpr_print (ret) ) ));
break;
default:
BADEXIT;
}
+
return ret;
}
return ret;
}
-
-
-
-