fixed a bug: STD/LDD was generated on odd-numbered reg
This commit is contained in:
parent
a44bbb3977
commit
ea09125e30
|
@ -211,6 +211,14 @@ reg_info *e1, *e2;
|
|||
return (e1->offset - e2->offset);
|
||||
}
|
||||
|
||||
static int even(s)
|
||||
char *s;
|
||||
{
|
||||
int l = strlen(s);
|
||||
/* Assume ASCII, where even-numbered characters (0,2,4,6,8) are even. */
|
||||
return ! (s[l-1] & 1);
|
||||
}
|
||||
|
||||
static save_float_regs()
|
||||
{
|
||||
int i;
|
||||
|
@ -220,6 +228,7 @@ static save_float_regs()
|
|||
for (i = 0, offset= 0; i < nr_flt_vars; i++, offset += 8)
|
||||
if ((i+1 < nr_flt_vars &&
|
||||
flt_dat[i].offset == flt_dat[i+1].offset-4 &&
|
||||
even(flt_dat[i].reg) &&
|
||||
flt_dat[i].size == EM_FSIZE &&
|
||||
flt_dat[i+1].size == EM_FSIZE)
|
||||
|| (flt_dat[i].size == EM_DSIZE)) {
|
||||
|
@ -240,6 +249,7 @@ load_float_regs()
|
|||
for (i = 0, offset= 0; i < nr_flt_vars; i++, offset += 8)
|
||||
if ((i+1 < nr_flt_vars &&
|
||||
flt_dat[i].offset == flt_dat[i+1].offset-4 &&
|
||||
even(flt_dat[i].reg) &&
|
||||
flt_dat[i].size == EM_FSIZE &&
|
||||
flt_dat[i+1].size == EM_FSIZE)
|
||||
|| (flt_dat[i].size == EM_DSIZE)) {
|
||||
|
|
Loading…
Reference in a new issue