On Feb 21, 2010, at 17:42, Erik Trulsson wrote: > Newer compilers usually have better generic optimizations that are not > CPU-dependent. Newer compilers also typically have improved support > for new language-features (and new languages for that matter.)
This is exactly where CPU dependence comes into play. I'd like for example take advantage of IEEE floating point semantics in our Ada compiler. Fifteen years ago, we had to face the fact that some systems were not compliant and therefore we developed least-common-denominator libraries that catered to all. However, nowadays even OpenVMS supports IEEE floating point. I'd like to get rid of hacks in GNAT avoid relying on strict IEEE compliance. Currently we end up doing some conversions and computations in the widest floating-point type to avoid double rounding. So, I'd like to be able to put all this behind me, and only have to think about fully IEEE compliant systems. Similarly, there is no way to fully implement C99 Annex F without using SSE2. As a last point, because not many GCC users take advantage of the hardware their systems have, there is less focus and feedback on improving SSE2 code generation, vectorization and the like. In conclusion, I think GCC is being held back by us sticking to 20-year old hardware. For GCC to be the best compiler possible on current and future systems, we have to start compiling for those systems by default. This is essential for GCC's long term relevance. -Geert