> I guess my point is that the direction in which a project *does* go is not
> always the direction in which it *should* go.  

I agree.  And depending on people's "political" views, that can either be
an advantage or disadvantage of the free software development model.

> To give just one small practical example, I'm told (by people who are more
> familiar with GCC internals than I) that it is not feasible with today's
> GCC to port to backends which have a small number of registers.

[Finally, a technical discussion in this thread!]

It never really has been.  Maybe it's not even possible now (I don't
know), but if you tried it in the past the results would never have
been very good.  Almost all multi-backend systems operate by having
very large numbers of expressions at all levels, which you gradually
lower to actual registers.  This works quite well if you have enough
registers to hold the high-usage expressions in them, but when you
have high register pressure, the model breaks down completely.
Although the situation may well have gotten worse in recent versions
that I'm not familiar with, I'd say that GCC was probably doing a
*better* job with a small number of registers in more recent versions
than in older ones: "reload" was particularly bad when there was high
register pressure.

When your main constraint is register pressure, in order to get
high-quality results, I think you almost have to change the entire
philosophy of compilation, to the point I think where you have an
almost entirely different compilation chain for such machines.

Reply via email to