GSoC/GCI Archive
Google Summer of Code 2010

GCC, the GNU Compiler Collection

Web Page: http://gcc.gnu.org/wiki/SummerOfCode

Mailing List: gcc@gcc.gnu.org

GCC is the GNU Compiler Collection, the standard compiler on most free operating systems.  It is run by the GCC Steering Committee under the auspices of the Free Software Foundation and is available under the GNU General Public License.  For more information please see the GCC home page.

The list of accepted student projects for GSoC 2010 is available at the GCC SoC wiki page.

Our project code repository for 2010 is at http://code.google.com/p/google-summer-of-code-2010-gcc/downloads/list

 

Project

Student

Mentor

EFI extension of Binutils

Yi-Hong Lu

H. J. Lu

Development of GIMPLE FE

Sandeep Soni

Diego Novillo

Improvement of general vector extension in GCC

Artjoms Sinkarovs

Richard Günther

Partial Implementation of Python as a GCC Front-end

Philip Herron

Ian Taylor

Improving the static control part detection mechanism in Graphite

Vladimir Kargov

Sebastian Pop

Traditional loop transformations in GRAPHITE

Ankur Deshwal

David Edelsohn

ScopLib support for Graphite - Linking Graphite to the huge industrial and research community

Riyadh Baghdadi

Sebastian Pop

Porting GRAPHITE to CLooG trunk

Andreas Simbuerger

Tobias Grosser

gfortran: Polymorphism and a complete OOP implementation

Janus Weil

Tobias Burnus

Extending Fortran 2003 and 2008 support for gfortran (esp. Co-Arrays)

Daniel Kraft

Tobias Burnus

 

Projects

  • Development of GIMPLE FE To convert the encoded GIMPLE IR in the bytestream to a fixed format textual representation of the GIMPLE tuples and develop a front end for recognizing this textual GIMPLE, built on top of the LTO FE.
  • EFI extension of Binutils EFI (Extensible Firmware Interface) is a trend of BIOS(Basic Input/Output System). This future BIOS provides a processor-independent device driver environment (like a virtual machine), called EBC VM, whose instruction set is called EFI Byte Code, or EBC. In this project, I’d like to implement the following: A. Assembler for EFI Byte Code implement using gas . B. Disassembler for EFI Byte Code Binary using objdump. C. Linker for EFI Byte Code Binary using ld.
  • Extending Fortran 2003 and 2008 support for gfortran (esp. Co-Arrays) I want to contribute to the ongoing development of "modern" language features support (standard Fortran 2003 and up-coming standard Fortran 2008) of the GNU Fortran compiler. My plans are to work on some "small" items like ASSOCIATE construct and extending the already founded OOP support, and especially help with the implementation of Co-Arrays (in particular, work on design and implementation of a "real" parallel one in addition to the currently developed "single-image" only support).
  • gfortran: Polymorphism and a complete OOP implementation My project aims for a complete implementation of the object-oriented features of the Fortran 2003 standard in gfortran, focusing on polymorphism. Such an implementation has been started last year and has partly entered the GCC 4.5 release already, but it is not yet complete and still has a couple of open issues. The primary goal is a complete and bug-free implementation of basic polymorphism. The long-term goal is the completion of all OOP-related F2003 features.
  • Improvement of general vector extension in GCC The project addresses the portability of vector operations in C considering efficiency and correctness. The starting point of the project is GCC general vector extension. I show that sometimes GCC ends-up with a wrong code because memory-alignment issues are not considered. I introduce a set of desirable interfaces for vector operations which are not currently supported. Finally I introduce several test-cases and discuss future work.
  • Improving the static control part detection mechanism in Graphite The static control part detection algorithm that is currently implemented in Graphite operates directly on the control flow graph and divides it into single entry single exit parts that meet all the requirements introduced by the polyhedral representation. That approach proved to be too specific and hard to extend. The main goal of the proposed project is to choose a better and more flexible region-based algorithm and implement it.
  • Partial Implementation of Python as a GCC Front-end Testing the feasibility of building a dynamic language as an AOT (ahead-of-time) compiled language, and as a research project into optimizing dynamic language's in this manor. This project should also establish and maintain a running documentation of building a front-end in GCC with interfaces and Intermediate Representations GENERIC/GIMPLE documented in the GCC internals manual with possibly a working skeleton front-end similar to the old Tree-Lang.
  • Porting GRAPHITE to CLooG trunk This project aims to port GRAPHITE's CLooG interface to the official CLooG. GRAPHITE uses CLooG to perform code generation for loops represented in the polyhedral model. By porting the interface, GRAPHITE is able to use new backends for generating code out of polyhedral program representations, the Integer Set Library (ISL) and a new backend for the Parma Polyhedral Library (PPL).
  • ScopLib support for Graphite - Linking Graphite to the huge industrial and research community Many polyhedral optimization tools and libraries have been developed since the 90's. Our project aims to enable Graphite to take advantage of these tools by making it able to export/import internal polyhedral representation to the scopLib file format, a standard format used for communication between polyhedral tools and libraries.
  • Traditional loop transformations in GRAPHITE Aim of the project is to include loop optimizations in GCC using Graphite framework, which will allow Graphite to act as unified framework to apply various transformations to improve optimization levels. The outline of work is to be done: 1.Include various loop optimizations based on Graphite framework. 2.Implement test cases to check functionality of transformations. 3.Benchmark the performance of transformations added. 4.Find heuristics for auto application of these optimizations.