* src/SDCCast.c (isConformingBody): fixed bug #949967
[fw/sdcc] / src / SDCCast.c
index a3fb39df8e7048a02e769ec735c62fcdc83885d9..ef2f29a7687986651c72604491c1c88b095c26ad 100644 (file)
@@ -1655,10 +1655,12 @@ isConformingBody (ast * pbody, symbol * sym, ast * body)
 /*------------------------------------------------------------------*/
     case '[':
       // if the loopvar is used as an index
-      if (astHasSymbol(pbody->right, sym)) {
+      /* array op is commutative -- must check both left & right */
+      if (astHasSymbol(pbody->right, sym) || astHasSymbol(pbody->left, sym)) {
        return FALSE;
       }
-      return isConformingBody (pbody->right, sym, body);
+      return isConformingBody (pbody->right, sym, body)
+              && isConformingBody (pbody->left, sym, body);
 
 /*------------------------------------------------------------------*/
     case PTR_OP: