]> git.sur5r.net Git - cc65/commitdiff
Fixed ca65's "ubiquitous_idents" feature.
authorGreg King <gregdk@users.sf.net>
Sat, 30 Nov 2013 13:20:36 +0000 (08:20 -0500)
committerGreg King <gregdk@users.sf.net>
Sat, 30 Nov 2013 13:20:36 +0000 (08:20 -0500)
Before the fix, that feature couldn't recognize a standard op-code mnemonic, that wasn't replaced by a macro, if it was on a line without a label.

This patch was written by Jeremy Turner.

src/ca65/main.c

index 4b2f9d1781a8ac6083b094c347ad4f05d2cb40e2..da826f4db3718a890c0e627f45946a1276647689 100644 (file)
@@ -646,15 +646,18 @@ static void OneLine (void)
      * an instruction.
      */
     if (CurTok.Tok == TOK_IDENT) {
-        if (!UbiquitousIdents) {
-            /* Macros and symbols cannot use instruction names */
+        if (UbiquitousIdents) {
+            /* Macros CAN be instructions, so check for them first */
+            Mac = FindMacro (&CurTok.SVal);
+            if (Mac == 0) {
+                Instr = FindInstruction (&CurTok.SVal);
+            }
+        } else {
+            /* Macros and symbols may NOT use the names of instructions */
             Instr = FindInstruction (&CurTok.SVal);
             if (Instr < 0) {
                 Mac = FindMacro (&CurTok.SVal);
             }
-        } else {
-            /* Macros and symbols may use the names of instructions */
-            Mac = FindMacro (&CurTok.SVal);
         }
     }
 
@@ -741,15 +744,18 @@ static void OneLine (void)
              * be a macro or instruction.
              */
             if (CurTok.Tok == TOK_IDENT) {
-                if (!UbiquitousIdents) {
-                    /* Macros and symbols cannot use instruction names */
+                if (UbiquitousIdents) {
+                    /* Macros CAN be instructions, so check for them first */
+                    Mac = FindMacro (&CurTok.SVal);
+                    if (Mac == 0) {
+                        Instr = FindInstruction (&CurTok.SVal);
+                    }
+                } else {
+                    /* Macros and symbols may NOT use the names of instructions */
                     Instr = FindInstruction (&CurTok.SVal);
                     if (Instr < 0) {
                         Mac = FindMacro (&CurTok.SVal);
                     }
-                } else {
-                    /* Macros and symbols may use the names of instructions */
-                    Mac = FindMacro (&CurTok.SVal);
                 }
             }
         }