# include "exprChecks.h"
# include "exprNodeSList.h"
-/*@-czechfcns@*/
-/*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
-// /*@-nullderef@*/ /* !!! DRL needs to fix this code! */
-// /*@-nullstate@*/ /* !!! DRL needs to fix this code! */
-// /*@-temptrans@*/ /* !!! DRL needs to fix this code! */
-
-/*@only@*/ /*@notnull@*/
-constraintExpr constraintExpr_makeIntLiteral (long i);
static ctype constraintExpr_getOrigType (constraintExpr p_e);
static bool constraintExpr_hasTypeChange(constraintExpr p_e) /*@*/;
constraintExpr_free(expr1);
constraintExpr_free(expr);
-
+
+ llassert (constraintExpr_isDefined(temp) );
return temp;
}
else
}
}
DPRINTF ((message ("After combine %s", constraintExpr_unparse(expr) ) ) );
- return expr;
+
+ llassert(constraintExpr_isDefined(expr) );
+ return expr;
}
/*@special@*/
return ret;
}
+/*@access exprNode@*/
constraintExpr constraintExpr_makeExprNode (exprNode e)
{
sRef s;
return ret;
}
+/*@noaccess exprNode@*/
+
+
+
+
/*@only@*/ constraintExpr constraintExpr_makeTermExprNode (/*@exposed@*/ exprNode e)
{
return oldconstraintExpr_makeTermExprNode(e);
/*drl added 8/08/001 */
bool constraintExpr_isTerm (/*@observer@*/ constraintExpr c) /*@*/
{
+ llassert(constraintExpr_isDefined (c) );
+
if (c->kind == term)
return TRUE;
{
constraintTerm term;
+ llassert(constraintExpr_isDefined (c) );
+
llassert(constraintExpr_isTerm(c) );
term = constraintExprData_termGetTerm(c->data);
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+ if (! mstring_isDefined(str) )
+ {
+ llfatalbug(message("Library file is corrupted") );
+ }
binaryOp = (constraintExprBinaryOpKind) reader_getInt(&str);
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+ if (! mstring_isDefined(str) )
+ {
+ llfatalbug(message("Library file is corrupted") );
+ }
+
reader_checkChar (&str, 'e');
reader_checkChar (&str, '1');
os = str;
str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+ if (! mstring_isDefined(str) )
+ {
+ llfatalbug(message("Library file is corrupted") );
+ }
+
unaryOp = (constraintExprUnaryOpKind) reader_getInt(&str);
expr = constraintExpr_undump (f);
constraintTerm t;
+ llassert(constraintExpr_isDefined(expr) );
+
DPRINTF((message("constraintExpr_dump:: dumping constraintExpr %s",
constraintExpr_unparse(expr)
) ));
s = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+ if (! mstring_isDefined(s) )
+ {
+ llfatalbug(message("Library file is corrupted") );
+ }
+
kind = (constraintExprKind) reader_getInt(&s);
free (os);
bool constraintExpr_canGetCType (constraintExpr e) /*@*/
{
+ if (constraintExpr_isUndefined(e) )
+ return FALSE;
+
if (e->kind == term)
{
return TRUE;
ctype constraintExpr_getCType (constraintExpr e) /*@*/
{
constraintTerm t;
-
+
+ llassert(constraintExpr_isDefined(e) );
+
llassert(constraintExpr_canGetCType(e) );
switch (e->kind)
static bool constraintExpr_hasTypeChange(constraintExpr e)
{
+ llassert(constraintExpr_isDefined(e) );
if (constraintExpr_isDefined((e)) && (e->ct == TRUE) )
{
return TRUE;
static ctype constraintExpr_getOrigType (constraintExpr e)
{
+ llassert(constraintExpr_isDefined(e) );
llassert(constraintExpr_hasTypeChange(e) );
return e;
}
+
+/*@access exprNode@*/
static /*@only@*/ constraintExpr constraintTerm_simpleDivTypeExprNode(/*@only@*/ constraintExpr e, ctype ct)
{
exprData data;
lltok tok;
constraintTerm t;
+ llassert(constraintExpr_isDefined(e) );
+
DPRINTF((
message("constraintTerm_simpleDivTypeExprNode e=%s, ct=%s",
constraintExpr_print(e), ctype_unparse(ct)
t = constraintExprData_termGetTerm(e->data);
expr = constraintTerm_getExprNode(t);
+
+ llassert(constraintExpr_isDefined(e) );
+ llassert(exprNode_isDefined(expr) );
if (expr->kind == XPR_OP)
{
tok = exprData_getOpTok (data);
if (lltok_isMult(tok) )
{
+ llassert(exprNode_isDefined(t1) && exprNode_isDefined(t2) );
+ /*drl 3/2/2003 we know this from the fact that it's a
+ multiplication operation...*/
if ((t1->kind == XPR_SIZEOF) || (t1->kind == XPR_SIZEOFT) )
{
}
else
{
- ct2 = qtype_getType (exprData_getType(exprData_getSingle (t2->edata)->edata ) );
+ exprNode exprTemp;
+ exprData eDTemp;
+
+ exprTemp = exprData_getSingle (t2->edata);
+
+ llassert(exprNode_isDefined(exprTemp) );
+ eDTemp = exprTemp->edata;
+
+ ct2 = qtype_getType (exprData_getType(eDTemp ) );
+
}
if (ctype_match (ctype_makePointer(ct2),ct) )
{
}
return (constraintExpr_div (e, ct) );
}
+/*@noaccess exprNode@*/
static /*@only@*/ constraintExpr simpleDivType (/*@only@*/ constraintExpr e, ctype ct)
{
DPRINTF(( (message("simpleDiv got %s ", constraintExpr_unparse(e) ) )
));
+ llassert(constraintExpr_isDefined(e) );
+
switch (e->kind)
{
case term:
constraintExpr_unparse(e) ) )
));
+ llassert(constraintExpr_isDefined(e) );
+
switch (e->kind)
{
case term: