Google's Summer Of Code
Thanks for your interest in the GNU Compiler Collection as your mentoring organization in Google's Summer of Code.
Summer of Code 2009 Accepted GCC Projects
Project |
Student |
Mentor |
Li Feng |
Tobias Grosser |
|
Enable generic function cloning and program instrumentation in GCC to be able to create static binaries adaptable to varying program and system behavior or different architectures at run-time |
Liang Peng |
Grigori Fursin |
gfortran: Procedure Pointer Components & OOP |
Tobias Burnus |
|
Traditional Loop Transformations |
pranav garg |
Sebastian Pop |
Make the OpenCL Platform Layer API and Runtime API for the Cell Processor and CPUs |
phil prattszeliga |
Paolo Bonzini |
Provide fine-grain optimization selection and tuning abilities in GCC to be able to tune default optimization heuristic of the compiler or fine optimizations for a given program on a given architecture entirely automatically using statistical and machine learning techniques from the MILEPOST project. |
Yuanjie Huang |
Grigori Fursin |
Application
The Drupal project has a great page on How to write an SOC application. A gcc Summer of Code participant for 2006, Laurynas Biveinis, wrote a blog about it.
Project Ideas
There are several pages with general ideas for GCC. These ideas are not just one project but many different projects linked here for easy of access.
Relatively simple tasks:
- Improve the regression testing system, for example to detect places where the generated code changed (useful for refactoring).
- Fix -ftrapv so that it works.
New optimization passes:
- Implement code motion of stores towards entry (and use this to improve code for int to float conversion on rs6000-based targets)
- Implement a prototype for early instruction selection
- Propagate interprocedural dataflow from GIMPLE to RTL
- Propagate alias information from GIMPLE to RTL
- Improve support for the restrict qualifier
- Add Factored Use-Def (FUD) chains to RTL
Loop optimizations and automatic parallelization based on Graphite ( Graphite Summer of Code ideas)
Language front-ends and run-time libraries:
- Refactor libstdc++ for optional smaller footprint configuration, e.g., iostreams without templates
Fortran front end: Unimplemented Fortran 2003 (and Fortran 2008) features, 4.5 plan and action list
OpenMP 3.0 support and other runtime improvements: openmp
Other projects:
- Develop XML format to represent GCC optimization flow (function, loop, block enumeration) and IDE/visualization environment for fine-grain program optimization or tuning of the default GCC optimization heuristic
Extend GCC generic function cloning to be able to create static binaries adaptable to different architectures at run-time (including multiple ISA generation). Cupertino Miranda has been extending this work recently and we may need to sync on that ... GCC function adaptation, GCC function specific optimization
Extend GCC plugin framework/ICI/MILEPOST framework to enable fine-grain transformation parameter tuning. Currently we can perform search for good combination of passes, their orders and parameter tuning on function level and we would like to be able to do it for each individual transformation to tune optimization heuristic for Graphite loop transformations, loop vectorization, inlining, unrolling, etc. Maybe the project can be separated in several sub-projects to focus on some specific optimizations such as GRAPHITE/vectorization optimization heuristic tuning.
- Extend GCC plugin framework/ICI to enable code instrumentation (insert calls to external function after individual instructions) for dynamic code analysis. We need it to extend our TM/TLS models.
- Port and stabilize GCC4NET to the trunk together with the plugin system.
- Converting different program representation levels of GCC back to the source code. It's not a trivial task but I saw substantial interest to that recently.
Separate the frontends from the middle-end (near bottom of page)
- Make -O2 (and other -On options) be a sum of individual -f* options, by adding a -fother-O2-optimizations (and same for other -On levels)
- When running the testsuite, run multiple tests in parallel
- Separate frontend folder from middle-end folder
- Emit debug information about types and declarations early (needed for LTO)
- Change the way thunks are emitted to be compatible with LTO
If you are interested in learning your way around the GCC codebase, the Partial_Transitions is a good place to start.
Other project ideas can be found in the bug database. Look for old bugs which are still open.
Or invent your own project. We're always open to good ideas. But note that we are probably not too interested in projects to add new extensions to the C or C++ languages. We've found over time that these tend to introduce more problems than they solve.
Thanks, and we look forward to your submissions!
Summer of Code 2008 Accepted GCC Projects
Project |
Student |
Mentor |
Steven Bosscher |
||
Improving Dead Store Elimination |
Jakub Staszak |
|
Extend Fortran 2003 support for gfortran |
Daniel Kraft |
François-Xavier Coudert |
C++0x lambda functions for GCC |
John Freeman |
|
Tobias Grosser |
||
Finish work on propagation aliasing and array dependence information from Tree-SSA to RTL. |
Alexander Monakov |
Diego Novillo |
Tobias Burnus |
Summer of Code 2007 Accepted GCC Projects
Project |
Student |
Mentor |
Propagating array data dependence information from Tree-SSA to RTL |
Alexander Monakov |
Daniel Berlin |
Manuel López-Ibáñez |
Diego Novillo |
|
Speeding up GCC for fun and profit |
James Webber |
Eric Marshall Christopher |
Janus Weil |
Steven Bosscher |
|
Open Mutliprogramming Interprocedural Analasis and Optimalizations |
Jakub Staszak |
Daniel Berlin |
Integrating OpenJDK's javac bytecode compiler into gcj |
Dalibor Topic |
Mark J. Wielaard |
New static scheduling heuristic for GCC |
Dmitry Zhurikhin |
Vladimir Makarov |
GCC support for Windows-compatible Structured Exception Handling (SEH) on the i386 platform |
Michele Cicciotti |
Ian Lance Taylor |
Summer of Code 2006 Accepted GCC Projects
Project |
Student |
Mentor |
Plesco Alexandru |
Daniel Berlin |
|
Paul Biggar |
Daniel Berlin |
|
Laurynas Biveinis |
Daniel Berlin |
|
Andrew John Hughes |
Mark Wielaard |
|
Phillip Jordan |
Benjamin Kosnik |
|
Manuel López-Ibáñez |
Ian Lance Taylor |