]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug (hopefully).
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 9 Jan 2005 21:17:19 +0000 (21:17 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 9 Jan 2005 21:17:19 +0000 (21:17 +0000)
The ArrayRef() does really need a rewrite, now since we have better
expression info.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3364 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c

index b4704009604a470d37f4d16dac8977e472ec4306..d2e8b7234c911fc0398e42bcad2dae38ba65b207 100644 (file)
@@ -799,7 +799,7 @@ static void Primary (ExprDesc* E)
 
 
 static void ArrayRef (ExprDesc* Expr)
-/* Handle an array reference */
+/* Handle an array reference. This function needs a rewrite. */
 {
     int         ConstBaseAddr;
     ExprDesc    SubScript;
@@ -909,7 +909,7 @@ static void ArrayRef (ExprDesc* Expr)
                 /* It's a pointer, so we do have to load it into the primary
                  * first (if it's not already there).
                  */
-                if (ConstBaseAddr) {
+                if (ConstBaseAddr || ED_IsLVal (Expr)) {
                     LoadExpr (CF_NONE, Expr);
                     ED_MakeRValExpr (Expr);
                 }