Fixed bug that never occurred, but was discovered by reading the code
This commit is contained in:
parent
f4691c73c4
commit
9155b8a68a
1 changed files with 4 additions and 10 deletions
|
@ -166,7 +166,7 @@ suitable_move(tp)
|
||||||
register t_type *tp;
|
register t_type *tp;
|
||||||
{
|
{
|
||||||
/* Find out how to load or store the value indicated by "ds".
|
/* Find out how to load or store the value indicated by "ds".
|
||||||
There are three ways:
|
There are four ways:
|
||||||
- suitable for BLM/LOI/STI
|
- suitable for BLM/LOI/STI
|
||||||
- suitable for LOI/STI
|
- suitable for LOI/STI
|
||||||
- suitable for LOS/STS/BLS
|
- suitable for LOS/STS/BLS
|
||||||
|
@ -214,10 +214,7 @@ CodeValue(ds, tp)
|
||||||
break;
|
break;
|
||||||
case USE_LOAD_STORE:
|
case USE_LOAD_STORE:
|
||||||
sz = WA(tp->tp_size);
|
sz = WA(tp->tp_size);
|
||||||
#ifndef SQUEEZE
|
if (ds->dsg_kind != DSG_PFIXED) {
|
||||||
if (ds->dsg_kind != DSG_PFIXED)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
arith tmp = NewPtr();
|
arith tmp = NewPtr();
|
||||||
|
|
||||||
CodeAddress(ds);
|
CodeAddress(ds);
|
||||||
|
@ -227,13 +224,11 @@ CodeValue(ds, tp)
|
||||||
LOL(tmp, pointer_size);
|
LOL(tmp, pointer_size);
|
||||||
FreePtr(tmp);
|
FreePtr(tmp);
|
||||||
}
|
}
|
||||||
#ifndef SQUEEZE
|
|
||||||
else {
|
else {
|
||||||
CodeConst(-sz, (int) pointer_size);
|
CodeConst(-sz, (int) pointer_size);
|
||||||
C_ass(pointer_size);
|
C_ass(pointer_size);
|
||||||
|
CodeAddress(ds);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
CodeAddress(ds);
|
|
||||||
CodeConst(tp->tp_size, (int) pointer_size);
|
CodeConst(tp->tp_size, (int) pointer_size);
|
||||||
CAL("load", (int)pointer_size + (int)pointer_size);
|
CAL("load", (int)pointer_size + (int)pointer_size);
|
||||||
break;
|
break;
|
||||||
|
@ -587,8 +582,7 @@ CodeVarDesig(df, ds)
|
||||||
C_lxa((arith) difflevel);
|
C_lxa((arith) difflevel);
|
||||||
if ((df->df_flags & D_VARPAR) ||
|
if ((df->df_flags & D_VARPAR) ||
|
||||||
IsConformantArray(df->df_type)) {
|
IsConformantArray(df->df_type)) {
|
||||||
/* var parameter, big parameter,
|
/* var parameter or conformant array.
|
||||||
or conformant array.
|
|
||||||
The address is passed.
|
The address is passed.
|
||||||
*/
|
*/
|
||||||
C_adp(df->var_off);
|
C_adp(df->var_off);
|
||||||
|
|
Loading…
Add table
Reference in a new issue