X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/b7b694d6212749bfa3aa56e853adff6a5aa3b87f..bb7c2085a0088f4a6b3fb68dcd0ce331f67e9a2d:/src/constraintExpr.c diff --git a/src/constraintExpr.c b/src/constraintExpr.c index da05e6e..8ea3ded 100644 --- a/src/constraintExpr.c +++ b/src/constraintExpr.c @@ -1,3 +1,27 @@ +/* +** Splint - annotation-assisted static program checker +** Copyright (C) 1994-2002 University of Virginia, +** Massachusetts Institute of Technology +** +** This program is free software; you can redistribute it and/or modify it +** under the terms of the GNU General Public License as published by the +** Free Software Foundation; either version 2 of the License, or (at your +** option) any later version. +** +** This program is distributed in the hope that it will be useful, but +** WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. +** +** The GNU General Public License is available from http://www.gnu.org/ or +** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +** MA 02111-1307, USA. +** +** For information on lclint: lclint-request@cs.virginia.edu +** To report a bug: lclint-bug@cs.virginia.edu +** For more information: http://www.splint.org +*/ + /* ** constraintExpr.c */ @@ -141,14 +165,14 @@ static bool isZeroBinaryOp (constraintExpr expr) tempOp = constraintExprData_binaryExprGetOp (expr2->data); - if (op == PLUS) + if (op == BINARYOP_PLUS) op = tempOp; - else if (op == MINUS) + else if (op == BINARYOP_MINUS) { - if (tempOp == PLUS) - op = MINUS; - else if (tempOp == MINUS) - op = PLUS; + if (tempOp == BINARYOP_PLUS) + op = BINARYOP_MINUS; + else if (tempOp == BINARYOP_MINUS) + op = BINARYOP_PLUS; else BADEXIT; } @@ -190,7 +214,7 @@ static bool isZeroBinaryOp (constraintExpr expr) op = constraintExprData_binaryExprGetOp (expr->data); - DPRINTF( (message("constraintExpr_propagateConstants: binaryexpr: %s", constraintExpr_unparse(expr) ) ) ); + DPRINTF((message("constraintExpr_propagateConstants: binaryexpr: %s", constraintExpr_unparse(expr) ) ) ); expr = removeZero(expr); @@ -209,9 +233,9 @@ static bool isZeroBinaryOp (constraintExpr expr) *propagate = propagate1 || propagate2; - if (op == PLUS) + if (op == BINARYOP_PLUS) *literal = literal1 + literal2; - else if (op == MINUS) + else if (op == BINARYOP_MINUS) *literal = literal1 - literal2; else BADEXIT; @@ -228,10 +252,10 @@ static bool isZeroBinaryOp (constraintExpr expr) constraintExpr_free (expr1); constraintExpr_free (expr2); - if (op == PLUS ) - return (constraintExpr_makeIntLiteral ( (t1+t2) )); - else if (op == MINUS) - return (constraintExpr_makeIntLiteral ( (t1-t2) )); + if (op == BINARYOP_PLUS ) + return (constraintExpr_makeIntLiteral ((t1+t2) )); + else if (op == BINARYOP_MINUS) + return (constraintExpr_makeIntLiteral ((t1-t2) )); else BADEXIT; } @@ -243,13 +267,13 @@ static bool isZeroBinaryOp (constraintExpr expr) *literal += constraintExpr_getValue (expr1); - if (op == PLUS) + if (op == BINARYOP_PLUS) { constraintExpr_free(expr1); constraintExpr_free(expr); return expr2; } - else if (op == MINUS) + else if (op == BINARYOP_MINUS) { constraintExpr temp; @@ -275,9 +299,9 @@ static bool isZeroBinaryOp (constraintExpr expr) { *propagate = TRUE; - if ( op == PLUS ) + if ( op == BINARYOP_PLUS ) *literal += constraintExpr_getValue (expr2); - else if (op == MINUS) + else if (op == BINARYOP_MINUS) *literal -= constraintExpr_getValue (expr2); else BADEXIT; @@ -288,7 +312,7 @@ static bool isZeroBinaryOp (constraintExpr expr) return expr1; } - DPRINTF( (message("constraintExpr_propagateConstants returning: %s", constraintExpr_unparse(expr) ) ) ); + DPRINTF((message("constraintExpr_propagateConstants returning: %s", constraintExpr_unparse(expr) ) ) ); expr->data = constraintExprData_binaryExprSetExpr1 (expr->data, expr1); expr->data = constraintExprData_binaryExprSetExpr2 (expr->data, expr2); @@ -302,7 +326,7 @@ static bool isZeroBinaryOp (constraintExpr expr) bool propagate; int literal; - DPRINTF ( (message ("Before combine %s", constraintExpr_unparse(expr) ) ) ); + DPRINTF ((message ("Before combine %s", constraintExpr_unparse(expr) ) ) ); expr = constraintExpr_propagateConstants (expr, &propagate, &literal); @@ -316,7 +340,7 @@ static bool isZeroBinaryOp (constraintExpr expr) expr = ret; } } - DPRINTF ( (message ("After combine %s", constraintExpr_unparse(expr) ) ) ); + DPRINTF ((message ("After combine %s", constraintExpr_unparse(expr) ) ) ); return expr; } @@ -482,7 +506,7 @@ constraintExpr constraintExpr_makeExprNode (exprNode e) case XPR_COMMA: t = exprData_getPairA(data); ret = constraintExpr_makeExprNode(t); - /*@i3434*/ /*I'm not sure if this is right. I'm adding a break to quite LCLint*/ + /*@i3434*/ /* drl: I'm not sure if this is right. I'm adding a break to quiet Splint */ break; default: ret = oldconstraintExpr_makeTermExprNode (e); @@ -728,9 +752,9 @@ constraintExpr constraintExpr_parseMakeBinaryOp (/*@only@*/ constraintExpr expr1 constraintExpr ret; ret = constraintExpr_makeBinaryOpConstraintExpr (expr1, expr2); if (op.tok == TPLUS) - ret->data = constraintExprData_binaryExprSetOp(ret->data, PLUS); + ret->data = constraintExprData_binaryExprSetOp(ret->data, BINARYOP_PLUS); else if (op.tok == TMINUS) - ret->data = constraintExprData_binaryExprSetOp(ret->data, MINUS); + ret->data = constraintExprData_binaryExprSetOp(ret->data, BINARYOP_MINUS); else { llassert(FALSE); @@ -759,7 +783,7 @@ constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (/*@only@*/ c constExpr = constraintExpr_makeIntLiteral (literal); ret = constraintExpr_makeBinaryOpConstraintExpr (expr, constExpr); - ret->data = constraintExprData_binaryExprSetOp(ret->data, PLUS); + ret->data = constraintExprData_binaryExprSetOp(ret->data, BINARYOP_PLUS); return ret; } @@ -771,7 +795,7 @@ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/constraintExpr ex inc = constraintExpr_makeIntLiteral (1); ret = constraintExpr_makeBinaryOpConstraintExpr (expr, inc); - ret->data = constraintExprData_binaryExprSetOp(ret->data, MINUS); + ret->data = constraintExprData_binaryExprSetOp(ret->data, BINARYOP_MINUS); return ret; } @@ -780,10 +804,10 @@ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/constraintExpr ex { constraintExpr ret; - DPRINTF ( (message ("Making subtract expression") ) ); + DPRINTF ((message ("Making subtract expression") ) ); ret = constraintExpr_makeBinaryOpConstraintExpr (expr, addent); - ret->data = constraintExprData_binaryExprSetOp (ret->data, MINUS); + ret->data = constraintExprData_binaryExprSetOp (ret->data, BINARYOP_MINUS); return ret; } @@ -794,10 +818,10 @@ constraintExpr addent) { constraintExpr ret; - DPRINTF ( (message ("Doing addTerm simplification") ) ); + DPRINTF ((message ("Doing addTerm simplification") ) ); ret = constraintExpr_makeBinaryOpConstraintExpr (expr, addent); - ret->data = constraintExprData_binaryExprSetOp (ret->data, PLUS); + ret->data = constraintExprData_binaryExprSetOp (ret->data, BINARYOP_PLUS); return ret; } @@ -810,7 +834,7 @@ constraintExpr constraintExpr_makeIncConstraintExpr (/*@only@*/ constraintExpr e inc = constraintExpr_makeIntLiteral (1); ret = constraintExpr_makeBinaryOpConstraintExpr (expr, inc); - ret->data = constraintExprData_binaryExprSetOp(ret->data, PLUS); + ret->data = constraintExprData_binaryExprSetOp(ret->data, BINARYOP_PLUS); return ret; } @@ -840,9 +864,9 @@ static cstring constraintExprBinaryOpKind_print (constraintExprBinaryOpKind op) switch (op) { - case PLUS: + case BINARYOP_PLUS: return message("+"); - case MINUS: + case BINARYOP_MINUS: return message("-"); default: @@ -1135,7 +1159,7 @@ static /*@only@*/ constraintExpr constraintExpr_simplifybinaryExpr (/*@only@*/co else { op = constraintExprData_binaryExprGetOp (c->data); - if (op == MINUS) + if (op == BINARYOP_MINUS) if (constraintExpr_similar(e1, e2) ) { constraintExpr_free(c); @@ -1179,9 +1203,9 @@ static /*@only@*/ constraintExpr constraintExpr_simplifybinaryExpr (/*@only@*/co lexpr->data = copyExprData (expr1->data, expr1->kind); constraintExpr_free(expr1); - if (op == PLUS) + if (op == BINARYOP_PLUS) expr = constraintExpr_makeSubtractExpr (expr, expr2); - else if (op == MINUS) + else if (op == BINARYOP_MINUS) expr = constraintExpr_makeAddExpr (expr, expr2); else BADEXIT; @@ -1206,7 +1230,7 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co DPRINTF ((message ("Doing constraintExpr_simplifyunaryExpr:%s", constraintExpr_unparse (c) ) ) ); - if ( (constraintExprData_unaryExprGetOp (c->data) != MAXSET) && + if ((constraintExprData_unaryExprGetOp (c->data) != MAXSET) && (constraintExprData_unaryExprGetOp (c->data) != MAXREAD) ) { return c; @@ -1283,7 +1307,7 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co return c; } - if (constraintExprData_binaryExprGetOp (exp->data) == PLUS ) + if (constraintExprData_binaryExprGetOp (exp->data) == BINARYOP_PLUS ) { /* if (constraintExpr_canGetValue (constraintExprData_binaryExprGetExpr2 (exp->data) ) ) */ @@ -1291,7 +1315,7 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co constraintExpr temp, temp2; - DPRINTF ( (message ("Doing fancy simplification") ) ); + DPRINTF ((message ("Doing fancy simplification") ) ); temp = constraintExprData_binaryExprGetExpr2 (exp->data); @@ -1305,11 +1329,11 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co c = constraintExpr_makeSubtractExpr (c, temp); - DPRINTF ( (message ("Done fancy simplification:%s", constraintExpr_unparse (c) ) ) ); + DPRINTF ((message ("Done fancy simplification:%s", constraintExpr_unparse (c) ) ) ); } } - DPRINTF ( (message ("constraintExpr_simplifyUnaryExpr: Done simplification:%s", constraintExpr_unparse (c) ) ) ); + DPRINTF ((message ("constraintExpr_simplifyUnaryExpr: Done simplification:%s", constraintExpr_unparse (c) ) ) ); constraintExpr_free(exp); return c; @@ -1322,12 +1346,12 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co constraintExpr ret; constraintTerm t; - DPRINTF ( (message ("Doing constraintExpr_simplify:%s", constraintExpr_unparse (c) ) ) ); + DPRINTF ((message ("Doing constraintExpr_simplify:%s", constraintExpr_unparse (c) ) ) ); /*@i22*/ - /*I think this is an LCLint bug */ + /* drl: I think this is an Splint bug */ ret = constraintExpr_copy(c); @@ -1360,7 +1384,7 @@ static /*@only@*/ constraintExpr constraintExpr_simplifyunaryExpr (/*@only@*/ co llassert(FALSE); } - DPRINTF ( (message ("constraintExpr_simplify returning :%s", constraintExpr_unparse (ret) ) ) ); + DPRINTF ((message ("constraintExpr_simplify returning :%s", constraintExpr_unparse (ret) ) ) ); return ret; } @@ -1770,7 +1794,7 @@ doSRefFixConstraintParamTerm (/*@only@*/ constraintExpr e, /*@observer@*/ /*@tem /* if (constraintTerm_hasTerm (expr->term, term) ) */ /* return TRUE; */ -/* if ( (expr->expr) != NULL) */ +/* if ((expr->expr) != NULL) */ /* { */ /* return ( constraintExpr_includesTerm (expr->expr, term) ); */ /* } */ @@ -1845,8 +1869,8 @@ static constraintExpr binaryExpr_undump (FILE *f) char * str; char * os; - str = mstring_create (MAX_DUMP_LINE_LENGTH); - os = str; + os = mstring_create (MAX_DUMP_LINE_LENGTH); + str = fgets(os, MAX_DUMP_LINE_LENGTH, f);