> 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.