]> git.sur5r.net Git - cc65/commitdiff
Try to generate more predicable code. clc always before adc or sbc.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 Aug 2009 16:59:26 +0000 (16:59 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 Aug 2009 16:59:26 +0000 (16:59 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4056 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/codegen.c

index 6527e76d1f7ad756e2bacdca14724f5b177438bb..a905e7128e3dea8d3da147d44404bd1de77e284c 100644 (file)
@@ -3235,13 +3235,18 @@ void g_inc (unsigned flags, unsigned long val)
                     if (val >= 0x300) {
                                AddCodeLine ("inx");
                     }
-                } else {
+                } else if ((val & 0xFF) != 0) {
                     AddCodeLine ("clc");
-                    if ((val & 0xFF) != 0) {
-                       AddCodeLine ("adc #$%02X", (unsigned char) val);
-                    }
+                    AddCodeLine ("adc #$%02X", (unsigned char) val);
+                    AddCodeLine ("pha");
+                    AddCodeLine ("txa");
+                    AddCodeLine ("adc #$%02X", (unsigned char) (val >> 8));
+                    AddCodeLine ("tax");
+                    AddCodeLine ("pla");
+                } else {
                     AddCodeLine ("pha");
                     AddCodeLine ("txa");
+                    AddCodeLine ("clc");
                     AddCodeLine ("adc #$%02X", (unsigned char) (val >> 8));
                     AddCodeLine ("tax");
                     AddCodeLine ("pla");