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:
cinap_lenrek 2015-10-08 17:14:07 +02:00
parent 285d96be4d
commit 2598a9e312

View file

@ -961,6 +961,10 @@ loop:
case OSTRING:
case OLSTRING:
case ONAME:
case OREGPAIR:
case OEXREG:
case OREGISTER:
case OINDREG:
return 0;
}
return 1;