bug fixed: generate "add.l #65536,a1" rather than "lea 65536(a1),a1".
The latter form is only generated for constants that fit in a word.
This commit is contained in:
parent
8958cb6faf
commit
46dc90f366
1 changed files with 7 additions and 1 deletions
|
@ -1048,7 +1048,8 @@ adp $1 >= 1 && $1 <= 8
|
||||||
... | ADDSCR | "add.l #$1,%[1]"
|
... | ADDSCR | "add.l #$1,%[1]"
|
||||||
erase(%[1])
|
erase(%[1])
|
||||||
setcc(%[1]) | %[1] | |
|
setcc(%[1]) | %[1] | |
|
||||||
adp | nocoercions: EXTERNAL_ADDR | | {EXTERNAL_ADDR,%[1.off] + "+"
|
adp $1 >= 0-32767 && $1 <= 32767
|
||||||
|
| nocoercions: EXTERNAL_ADDR | | {EXTERNAL_ADDR,%[1.off] + "+"
|
||||||
+ tostring($1)} | |
|
+ tostring($1)} | |
|
||||||
... | nocoercions: LOCAL_ADDR | | {LOCAL_ADDR,%[1.off]+$1} | |
|
... | nocoercions: LOCAL_ADDR | | {LOCAL_ADDR,%[1.off]+$1} | |
|
||||||
... | nocoercions: REGOFF_ADDR | | {REGOFF_ADDR,%[1.reg],%[1.off]+$1} | |
|
... | nocoercions: REGOFF_ADDR | | {REGOFF_ADDR,%[1.reg],%[1.off]+$1} | |
|
||||||
|
@ -1056,6 +1057,11 @@ adp | nocoercions: EXTERNAL_ADDR | | {EXTERNAL_ADDR,%[1.off] + "+"
|
||||||
... | ADDSCR | "lea $1(%[1]),%[1]"
|
... | ADDSCR | "lea $1(%[1]),%[1]"
|
||||||
erase(%[1])
|
erase(%[1])
|
||||||
setcc(%[1]) | %[1] | |
|
setcc(%[1]) | %[1] | |
|
||||||
|
adp | nocoercions: EXTERNAL_ADDR | | {EXTERNAL_ADDR,%[1.off] + "+"
|
||||||
|
+ tostring($1)} | |
|
||||||
|
... | ADDSCR | "add.l #$1,%[1]"
|
||||||
|
erase(%[1])
|
||||||
|
setcc(%[1]) | %[1] | |
|
||||||
|
|
||||||
/* The next patterns are for efficient translation of "*p++" in C */
|
/* The next patterns are for efficient translation of "*p++" in C */
|
||||||
ldl ldl adp sdl $1 == $2 && $2 == $4 | |
|
ldl ldl adp sdl $1 == $2 && $2 == $4 | |
|
||||||
|
|
Loading…
Add table
Reference in a new issue