Bugs fixed for the following patterns:

lol loc 255 and 2  (byte order was wrong)
loc x beq , 0 < x < 128  (was 0 < x < 256)
loc x bne (idem).
These bugs were introduced in version 2.2.
This commit is contained in:
bal 1985-01-30 16:34:14 +00:00
parent b99ce86e16
commit d1c0d1db13

View file

@ -1308,7 +1308,7 @@ and defined($1) && $1 == 2 | ANY DATASCR |
"and %[2],%[1]"
setcc(%[1])
erase(%[1]) | %[1] | | (2,2)+%[2]
lol loc and $2 == 255 && inreg($1) < 2 && $3 == 2 | | | {DISPL1,LB,$1} | |
lol loc and $2 == 255 && inreg($1) < 2 && $3 == 2 | | | {DISPL1,LB,$1+1} | |
lal loi and lal sti $1 == $4 && $2 == 1 && $3 == 2 && $5 == 1 && inreg($1) < 2
| DATAREG |
remove(MEM_ALL)
@ -2371,14 +2371,14 @@ tgt | DATA_ALT | allocate(DATAREG={IMMEDIATE,1})
bra | STACK | "bra $1" | | |
/* byte comparisons */
loc beq $1 >= 0 && $1 < 256 | nocoercions: DATA_ALT1 |
loc beq $1 >= 0 && $1 < 128 | nocoercions: DATA_ALT1 |
remove(ALL)
"cmp.b #$1,%[1]"
"beq $2" | | |
... | DATA_ALT STACK |
"cmp #$1,%[1]"
"beq $2" | | |
loc bne $1 >= 0 && $1 < 256 | nocoercions: DATA_ALT1 |
loc bne $1 >= 0 && $1 < 128 | nocoercions: DATA_ALT1 |
remove(ALL)
"cmp.b #$1,%[1]"
"bne $2" | | |