]> git.sur5r.net Git - cc65/blobdiff - src/cc65/coptstore.h
added optimization for indexed pointer load of a constant, e.g.: y = ((unsigned char...
[cc65] / src / cc65 / coptstore.h
index 29a97de7d00abc2fa927afe993ab71e2bcfafb80..fc93b40ea4122d5062f9d12943268d57b16c5b81 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2002      Ullrich von Bassewitz                                       */
-/*               Wacholderweg 14                                             */
-/*               D-70597 Stuttgart                                           */
-/* EMail:        uz@cc65.org                                                 */
+/* (C) 2002-2006, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
 
 
 /*****************************************************************************/
-/*                                  Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
 
 unsigned OptStore1 (CodeSeg* S);
+/* Search for the sequence
+**
+**      ldy     #n
+**      jsr     staxysp
+**      ldy     #n+1
+**      jsr     ldaxysp
+**
+** and remove the useless load, provided that the next insn doesn't use flags
+** from the load.
+*/
+
+unsigned OptStore2 (CodeSeg* S);
 /* Search for a call to staxysp. If the ax register is not used later, and
- * the value is constant, just use the A register and store directly into the
- * stack.
- */
+** the value is constant, just use the A register and store directly into the
+** stack.
+*/
 
-unsigned OptStore2 (CodeSeg* S);               
+unsigned OptStore3 (CodeSeg* S);
 /* Search for a call to steaxysp. If the eax register is not used later, and
- * the value is constant, just use the A register and store directly into the
- * stack.
- */
+** the value is constant, just use the A register and store directly into the
+** stack.
+*/
+
+unsigned OptStore4 (CodeSeg* S);
+/* Search for the sequence
+**
+**      sta     xx
+**      stx     yy
+**      lda     xx
+**      ldx     yy
+**
+** and remove the useless load, provided that the next insn doesn't use flags
+** from the load.
+*/
+
+unsigned OptStore5 (CodeSeg* S);
+/* Search for the sequence
+**
+**      lda     foo
+**      ldx     bar
+**      sta     something
+**      stx     something-else
+**
+** and replace it by
+**
+**      lda     foo
+**      sta     something
+**      lda     bar
+**      sta     something-else
+**
+** if X is not used later. This replacement doesn't save any cycles or bytes,
+** but it keeps the value of X, which may be reused later.
+*/
 
 
 
 /* End of coptstore.h */
 
 #endif
-
-
-