]> git.sur5r.net Git - cc65/blobdiff - src/cc65/codeent.c
Optimization for __bzero.
[cc65] / src / cc65 / codeent.c
index 427a17ef1e74acd9b05429d98feec88f91142ebf..3868a353103f7e0b14d80dac9f66ba7441019a1f 100644 (file)
@@ -245,8 +245,8 @@ CodeEntry* NewCodeEntry (opc_t OPC, am_t AM, const char* Arg,
     E->OPC    = D->OPC;
     E->AM     = AM;
     E->Size   = GetInsnSize (E->OPC, E->AM);
-    E->Flags  = NumArg (E->Arg, &E->Num)? CEF_NUMARG : 0;
     E->Arg    = GetArgCopy (Arg);
+    E->Flags  = NumArg (E->Arg, &E->Num)? CEF_NUMARG : 0;   /* Needs E->Arg */
     E->Info   = D->Info;
     E->JumpTo = JumpTo;
     E->LI     = UseLineInfo (LI);
@@ -427,19 +427,6 @@ void CE_FreeRegInfo (CodeEntry* E)
 
 
 
-#if 0   /* Used for debugging */
-static void DumpRegInfo (const char* Desc, const RegInfo* RI)
-{
-    fprintf (stdout, "%s:\n", Desc);
-    fprintf (stdout, "In:  ");
-    RC_Dump (stdout, &RI->In);
-    fprintf (stdout, "Out: ");
-    RC_Dump (stdout, &RI->Out);
-}
-#endif
-
-
-
 void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
 /* Generate register info for this instruction. If an old info exists, it is
  * overwritten.
@@ -510,7 +497,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
            break;
 
        case OP65_ASL:
-           if (E->AM == AM65_ACC && In->RegA >= 0) {
+           if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
                Out->RegA = (In->RegA << 1) & 0xFF;
            } else if (E->AM == AM65_ZP) {
                switch (GetKnownReg (E->Chg & REG_ZP, In)) {
@@ -597,7 +584,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
            break;
 
        case OP65_DEC:
-           if (E->AM == AM65_ACC && In->RegA >= 0) {
+           if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
                Out->RegA = (In->RegA - 1) & 0xFF;
            } else if (E->AM == AM65_ZP) {
                switch (GetKnownReg (E->Chg & REG_ZP, In)) {
@@ -673,7 +660,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
            break;
 
        case OP65_INC:
-           if (E->AM == AM65_ACC && In->RegA >= 0) {
+           if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
                Out->RegA = (In->RegA + 1) & 0xFF;
            } else if (E->AM == AM65_ZP) {
                switch (GetKnownReg (E->Chg & REG_ZP, In)) {
@@ -876,7 +863,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
            break;
 
        case OP65_LSR:
-           if (E->AM == AM65_ACC && In->RegA >= 0) {
+           if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
                Out->RegA = (In->RegA >> 1) & 0xFF;
            } else if (E->AM == AM65_ZP) {
                switch (GetKnownReg (E->Chg & REG_ZP, In)) {
@@ -1153,7 +1140,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
                /* Invalidates all ZP registers */
                RC_InvalidateZP (Out);
            } else if (E->AM == AM65_ZP) {
-               if (In->RegA >= 0) {
+               if (RegValIsKnown (In->RegA)) {
                    switch (GetKnownReg (E->Chg & REG_ZP, In)) {
                        case REG_TMP1:
                            Out->Tmp1 &= ~In->RegA;
@@ -1198,7 +1185,7 @@ void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
                /* Invalidates all ZP registers */
                RC_InvalidateZP (Out);
            } else if (E->AM == AM65_ZP) {
-               if (In->RegA >= 0) {
+               if (RegValIsKnown (In->RegA)) {
                    switch (GetKnownReg (E->Chg & REG_ZP, In)) {
                        case REG_TMP1:
                            Out->Tmp1 |= In->RegA;