InsertEntry (D, X, D->IP++);
/* Lhs load entries can be removed */
- D->Lhs.X.Flags |= LI_REMOVE;
- D->Lhs.A.Flags |= LI_REMOVE;
+ if (LoadX->AM != AM65_IMM) {
+ D->Lhs.X.Flags |= LI_REMOVE;
+ }
+ if (LoadA->AM != AM65_IMM) {
+ D->Lhs.A.Flags |= LI_REMOVE;
+ }
} else if ((D->Rhs.A.Flags & (LI_DIRECT | LI_RELOAD_Y)) == LI_DIRECT &&
(D->Rhs.X.Flags & (LI_DIRECT | LI_RELOAD_Y)) == LI_DIRECT) {
InsertEntry (D, X, D->IP++);
/* Rhs load entries can be removed */
- D->Rhs.X.Flags |= LI_REMOVE;
- D->Rhs.A.Flags |= LI_REMOVE;
+ if (LoadX->AM != AM65_IMM) {
+ D->Rhs.X.Flags |= LI_REMOVE;
+ }
+ if (LoadA->AM != AM65_IMM) {
+ D->Rhs.A.Flags |= LI_REMOVE;
+ }
} else if ((D->Rhs.A.Flags & LI_DIRECT) != 0 &&
(D->Rhs.X.Flags & LI_DIRECT) != 0) {