]> git.sur5r.net Git - cc65/commitdiff
Fixed wrong assumptions in the optimizer when subroutine calls to absolute
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 21 Dec 2003 10:23:23 +0000 (10:23 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 21 Dec 2003 10:23:23 +0000 (10:23 +0000)
addresses are made.

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

src/cc65/codeinfo.c

index 322b471ff0e8109a9bfb0d906d870ff67a7cb614..1a583ff02e64c19d87a4bbbaa9e1be6983a048ab 100644 (file)
@@ -37,6 +37,7 @@
 #include <string.h>
 
 /* common */
+#include "chartype.h"
 #include "coll.h"
 
 /* cc65 */
@@ -309,6 +310,15 @@ void GetFuncInfo (const char* Name, unsigned short* Use, unsigned short* Chg)
            return;
        }
 
+    } else if (IsDigit (Name[0]) || Name[0] == '$') {
+
+        /* A call to a numeric address. Assume that all CPU registers get
+         * used, but no memory contents are changed.
+         */
+        *Use = REG_AXY;
+        *Chg = REG_AXY;
+        return;
+
     } else {
 
        /* Search for the function in the list of builtin functions */
@@ -629,7 +639,7 @@ unsigned GetKnownReg (unsigned Use, const RegContents* RC)
     }
 }
 
-                              
+
 
 static cmp_t FindCmpCond (const char* Code, unsigned CodeLen)
 /* Search for a compare condition by the given code using the given length */