cc: restore side(), but do not consider OINDEX as side effect free
from charles forsuth: because the previous version thought OINDEX might have a side effect, it stopped it building a tower of them. probably the best thing is to limit that anyway, since each one consumes 2-3 registers, so towering them can keep even more active, and the x86 hasn't got that many. the quick hack is to return that case to the earlier state by treating OINDEX as a side-effect in side(). it's not a bad thing to do in the OSTRUCT case, for similar reasons: it's better to collapse the indexed pointer into a direct register, instead of repeating the indexing operation through the copying of the value. OINDEX isn't a machine-independent operation, so it doesn't affect the uses in ../cc
This commit is contained in:
parent
285d96be4d
commit
2598a9e312
1 changed files with 4 additions and 0 deletions
|
@ -961,6 +961,10 @@ loop:
|
|||
case OSTRING:
|
||||
case OLSTRING:
|
||||
case ONAME:
|
||||
case OREGPAIR:
|
||||
case OEXREG:
|
||||
case OREGISTER:
|
||||
case OINDREG:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue