From: epetrich Date: Fri, 22 Oct 2004 04:02:03 +0000 (+0000) Subject: * src/SDCCast.h (struct ast), X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=b9f227a7df147ba5f0ee09f6530727313fb1c0f1;p=fw%2Fsdcc * src/SDCCast.h (struct ast), * src/SDCCast.c (reverseParms, copyAst): fixed bug #1040577 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3548 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index e1a5733c..b0b11456 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-22 Erik Petrich + + * src/SDCCast.h (struct ast), + * src/SDCCast.c (reverseParms, copyAst): fixed bug #1040577 + 2004-10-20 Borut Razem * support/scripts/sdcc.nsi: added include/pic16/*.h to the setup diff --git a/src/SDCCast.c b/src/SDCCast.c index 2ba8dd0e..f8bb4fc1 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -218,6 +218,7 @@ copyAst (ast * src) dest->lineno = src->lineno; dest->level = src->level; dest->funcName = src->funcName; + dest->reversed = src->reversed; if (src->ftype) dest->etype = getSpec (dest->ftype = copyLinkChain (src->ftype)); @@ -630,11 +631,12 @@ reverseParms (ast * ptree) return; /* top down if we find a nonParm tree then quit */ - if (ptree->type == EX_OP && ptree->opval.op == PARAM) + if (ptree->type == EX_OP && ptree->opval.op == PARAM && !ptree->reversed) { ttree = ptree->left; ptree->left = ptree->right; ptree->right = ttree; + ptree->reversed = 1; reverseParms (ptree->left); reverseParms (ptree->right); } diff --git a/src/SDCCast.h b/src/SDCCast.h index 8cc1a4e1..9e8ac526 100644 --- a/src/SDCCast.h +++ b/src/SDCCast.h @@ -49,6 +49,7 @@ typedef struct ast unsigned rvalue:1; unsigned lvalue:1; unsigned initMode:1; + unsigned reversed:1; int level; /* level for expr */ int block; /* block number */ int seqPoint; /* sequence point */