From d1c31d130a11ca54e39e4fcbffcaf206b9c5f3d3 Mon Sep 17 00:00:00 2001 From: johanknol Date: Sun, 13 Jan 2002 14:02:42 +0000 Subject: [PATCH] fixed bug #502858 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1794 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCast.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/SDCCast.c b/src/SDCCast.c index dfb3ad05..7092d9ea 100644 --- a/src/SDCCast.c +++ b/src/SDCCast.c @@ -1633,9 +1633,16 @@ isConformingBody (ast * pbody, symbol * sym, ast * body) if (astHasVolatile (pbody->left)) return FALSE; - if (IS_AST_SYM_VALUE (pbody->left) && - isSymbolEqual (AST_SYMBOL (pbody->left), sym)) - return FALSE; + if (IS_AST_SYM_VALUE (pbody->left)) { + // if the loopvar has an assignment + if (isSymbolEqual (AST_SYMBOL (pbody->left), sym)) + return FALSE; + // if the loopvar is used in another (maybe conditional) block + if (astHasSymbol (pbody->right, sym) && + (pbody->level > body->level)) { + return FALSE; + } + } if (astHasVolatile (pbody->left)) return FALSE; -- 2.47.2