]> git.lizzy.rs Git - plan9front.git/commitdiff
cc: restore side(), but do not consider OINDEX as side effect free
authorcinap_lenrek <cinap_lenrek@felloff.net>
Thu, 8 Oct 2015 15:14:07 +0000 (17:14 +0200)
committercinap_lenrek <cinap_lenrek@felloff.net>
Thu, 8 Oct 2015 15:14:07 +0000 (17:14 +0200)
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

sys/src/cmd/cc/sub.c

index d0bbeb89cca9ad1e00fef3722530faa0ca89cfe6..0133b2bea53ca4fc43f49a392e6f85fd132b32d2 100644 (file)
@@ -961,6 +961,10 @@ loop:
        case OSTRING:
        case OLSTRING:
        case ONAME:
+       case OREGPAIR:
+       case OEXREG:
+       case OREGISTER:
+       case OINDREG:
                return 0;
        }
        return 1;