*NB:* there will not be a GCC 3.5. The next release of GCC will be GCC 4.0.
*NB:* that dates on this page refer to the year 2004.
*See also Last-Minute_Requests_for_4.0.0 and GCC_4.1_Projects
The GCC Release Manager, Mark Mitchell, asked contributors to inform him of the projects they still had planned for GCC 4.0. Based on this information and discussions on the mailing list, he selected projects that would be allowed in for GCC 4.0, and project that have to be postponed until post-4.0.
Regressions to be fixed: all [[Regressions]]
Tree-SSA
The tree-ssa infrastructure (Diego Novillo et. al.)
Cleanups, etc.
There were a few submissions that are cleanups, or infrastructure improvements, on which nothing else depends, and which -- according to the submitters themselves -- do not bring substantial user-visible improvements. Those projects had to be submitted before the previously announced Stage 3 cutoff date: September 5th.
The only proposed project that has actually managed to make this deadline is:
- Convert RTL passes to use pass manager (Nerode/Bonzini)
_State: added new long options for RTL and cgraph dumps; actual conversion not submitted_
Three other changes did not make the deadline so they have now been postponed.
Target/language-specific changes
As a general rule, decisions about target-specific and language-specific changes have been delegated by the RM to the discretion of the appropriate maintainers, at least until the release branch is created - and perhaps longer. So, for example, the Java ABI rework can go in during Stage 3, if the Java maintainers think that's OK, and the MIPS paired-float work can go in if the MIPS maintainers think it's OK. Maintainers are expected to exercise good judgement here, and err on the side of caution.
This delegation rule applies to the following language-specific changes:
Member class template as template friend (PR13495) (Lerdsuwanakij)
_State: committed_- GCJ BC ABI (Haley/McKinlay/Tromey)
C90 conformance (Myers)
- Objective-C++ (Laski)
Add "Class <protocol>" support to the ObjC frontend (Ayers)
In addition, the GCC Steering Committee has promised Apple (Zem Laski) that we will get Objective-C++ into GCC 4.0. Therefore, GCC 4.0 will not be released without Objective-C++, unless something seems to have gone horribly awry. *(Update)* Things went horribly awry, so Objective-C++ has not made it into GCC 4.0.
This delegation rule also applies to the following target-specific changes:
- PowerPC GNU/Linux dot-symbol removal (Modra)
- MIPS paired single support (Wilson)
- PA long conditional branches (Anglin)
- PA GNU/Linux TLS (Anglin)
- PA HP-UX Ada (Anglin)
- 64-bit PA HP-UX shared libgcc support (Anglin)
Windows TLS/weak/shared/versioning support (LaFramboise)
This delegation rule does *not* apply to the following changes, because the RM considers them to have too high a risk/reward ratio, and they will therefore be postponed until GCC 4.1:
- 64-bit PA HP-UX DWARF2 Exceptions (Anglin)
- PA HP frame layout (Anglin)
- IA64 floating-point model (Weinberg)
HP-UX fpreg support (Weinberg)
- HP-UX #pragma _USE_SF support (Weinberg)
- IA64 division/sqrt scheduling improvements (Weinberg)
If these get done, look very solid, and everyone wants them, they may be reconsidered.
For common code (including optimizations) similar responsibilities are not delegated to component maintainers because the consequences of changes there are much more far-reaching. Decisions about changes to common code can be taken only by the Release Manager.
Compile-Time Improvements
There were three submissions relating primarily to compile-time improvements. Since this has been a persistent problem, we'll allow these changes for GCC 4.0 -- if they can get finished quickly enough.
- Fix/finish --enable-mapped-location (Bothner)
deadline: September 19
_State: submitted, discussion ongoing about making it the default_
- Edges-in-vectors conversion (Elliston)
deadline: September 19
_State: committed_
- General compile-time performance improvements (Weinberg)
**This project is a catch-all. We will decide these on a per-change basis. Compile-time performance is a major issue. As in previous Stage 3s, and even on release branches, these changes will be OK, with appropriate maintainer approval -- but more localized, smaller changes will of course be favored over bigger changes.
_Update: changes deemed too invasive for stage 3 changes will happen on a branch_
Optimization Changes
There are a ton of these: a lot of people are working hard on a lot of really interesting projects. What the RM has done with these proposals is select those that have the best risk/reward/timeliness tradeoffs.
- Analysis of usage of compilation unit static variables and removal
- of spurious clobbering vdef based on the information (Zadeck)
deadline: September 12
_State: moving to tree-profiling and removed from mainline due to broken cgraph static variable handling on mainline_
- Use the previous project to promote non-escaping static variables
- into true SSA variables (Zadeck)
deadline: September 19
_State: depends on above_
- Vectorize unknown-loop-bound support (Golovanevsky)
deadline: September 12
_State: committed_
- Vectorizer peeling-for-alignment support (Golovanevsky)
deadline: September 19
_State: committed_
- Vectorizer additional data-references support (Rosen)
deadline: September 19
_State: committed_
- Linear loop transforms (Berlin)
deadline: September 12
_State: everything but a few fixes merged_
- Variable expansion optimization (Dvorak/Eres)
deadline: September 12
_State: partially in cvs HEAD, memory reference splitting submitted_
- LNO branch merge (Dvorak)
deadline: September 19
_State: all interesting things merged. branch should be considered dead, or not relevant to 4.0 anymore_
- Tree-based branch prediction (Hubicka)
deadline: September 5
_State: partially in cvs HEAD_
- Tree-based profile-directed feedback (Hubicka)
deadline: September 12
_State: partially in cvs HEAD_
The following changes have been postponed until GCC 4.1 or later. These changes either provide too little benefit, are too risky, or will take too much time to complete.
- Tree-based coverage (Hubicka)
- Aliasing improvements for structure fields (Berlin)
- Value range propagation (Novillo)
- CFG-based inliner (Hastings)
- Vectorizer misaligned-loads support (Naishlos)
- Vectorizer pattern recognition support (Naishlos)
- If-conversion and vectorization of conditional code (Patel)
_State: partially submitted but will not be completed before GCC 4.0_
- SMS improvements (Hagog, Markovitch)
Immediate use integration (MacLeod)
- Top-level bootstrap (Bonzini/Nerode)
_State: complete, will not be enabled by default_
- Automatic dependency for GCC builds (Weinberg)