Back to Programs

Programming languages

GNU Compiler Collection (GCC)

GNU compilers

autotoolscc++gnu make

Participation history

9 GSoC years

2026

5 projects

Official year page

Extending C++ Support in GCC Static Analyzer

GCC's static analyzer (-fanalyzer) lacks C++ class hierarchy awareness, causing it to miss bugs in exception catch blocks that use base types and...

[gccrs] Adding Infrastructure to Compile the Rust 'alloc' Crate

This project implements the compiler infrastructure—including missing intrinsics and lang items—required to compile Rust’s alloc crate in GCC Rust...

Add infrastructure to handle the "Drop" trait

gccrs still lacks support for Rust’s Drop trait, which is a core part of Rust’s resource management model. Without it, values that require cleanup...

libgomp Optimizations for Scheduler Guided OpenMP Execution in Cloud VMs

Modern cloud environments frequently rely on oversubscription to maximize resource utilization, which introduces significant performance challenges...

Enhance OpenACC Support in GCC

GCC currently supports most OpenACC directives for GPU offloading, but several features remain unimplemented or incomplete. This project targets four...

2025

6 projects

Official year page

Implementation of a simple in-memory file system for running offloading tests on NVIDIA GPUs

This project aims to implement an in-memory, volatile file system for NVIDIA GPUs using the NVPTX backend in newlib. NVPTX offloading in GCC enables...

Fortran - 2018/202x

This project aims to implement some new language features introduced in Fortran 2018 and Fortran 202x, enhancing gfortran's compatibility with newer...

Implementing Parallel Features on the GCC Ada Frontend

The GNAT front end does not currently recognize the "parallel" keyword added as part of Ada 2022. The goal of this project is to add support in the...

Tooling for running BPF GCC tests on a live kernel

This project addresses the lack of execution tests for the BPF backend in GCC. While GCC has many compile-time tests, the BPF backend, which...

Rewrite Rust lints to operate on frontend's HIR

GCC Rust (gccrs) is an alternative Rust compiler frontend based on GCC, aiming for full integration into the GNU toolchain. This project focuses on...

gccrs: Improving match expressions & pattern matching

This medium-sized project aims to improve pattern matching support in gccrs, the GCC frontend for Rust, by implementing compilation for the currently...

2024

7 projects

Official year page

Fortran – DO CONCURRENT

The project aims to enhance the f951 compiler's `DO CONCURRENT` construct by implementing locality clauses, supporting reduction operation and...

gccrs - Inline Assembly Support

gccrs is a full alternative implementation of the Rust language ontop of GCC with the goal to become fully upstream with the GNU toolchain. One of...

Borrow-checking IR location support

The main goal of this project is to add location support in GCC Rust, to BIR i.e an intermediate representation that will be exclusively used by the...

Improve nothrow detection in GCC

Exception handling in GCC follows the Itanium ABI, particularly the C++ exception handling ABI. This process involves creating, throwing, and finally...

Offloading to a separate process on the same host

The project focuses on streamlining the debugging and development process for code intended for offloading to devices like GPUs. It proposes a method...

Rustc Testsuite Adapter for GCC Rust (GCCRS)

We have to adapt a copy of the rustc testsuite to make use of the error code framework implemented in gccrs as part of GSoC 2023. We need to develop...

Structured Dumping of GENERIC Trees

This project adds a new dump option to gcc that dumps GENERIC trees as JSON. We also add some plumbing into gcc's gdb hooks that allow one to browse...

2023

6 projects

Official year page

Extending gcc -fanalyzer C++ support for self-analysis

Currently, the static analyzer offers little dedicated support for C++. Even when projecting the most straightforward valid C test cases to C++, the...

GCC static analyzer plugin for CPython extension modules

One pertinent use case of the gcc-python plugin was to provide the infrastructure for cpychecker, a static analysis tool designed for CPython...

C++: Implement compiler built-ins for the standard library traits

Many C++ standard library traits are often implemented using template metaprogramming, which can result in worse compilation performance due to...

Improving user errors & Error Code Support for GCC Rust Frontend

The goal of this project is to enhance the user experience of gccrs by enabling it to emit error codes similar to rustc. This will help bridge the...

Unicode Support for GCC Rust Frontend

The Rust programming language supports Unicode in identifiers, similarly to other modern programming languages such as Go, C++, and JavaScript. The...

Bypass assembler when generating LTO object files

Link Time Optimization (LTO) enables GCC to dump its internal representation (GIMPLE) to disk so that a single executable can be optimized as a...

2022

3 projects

Official year page

Extend GCCs static analyzer to support checking for POSIX file descriptor APIs

The project aims to extend GCC’s static analyzer to support reporting warnings for “misuse” of POSIX FD APIs such as double-close, leakage, access...

New checkers for GCC’s static analyzer

Static analysis helps developers to find bugs in their code at compile-time. Shipping a static analysis tool built into the compiler, which can be...

Complete Support for Constant Folding in GCC Rust Frontend

This projects aims to complete the support for Constant Folding in GCC Rust frontend. It will do so by finishing the already started constant folding...

2021

3 projects

Official year page

Extending C++ support for static analysis pass

The project aims to make GCC's static analysis pass ( -fanalyzer option ) understand dynamic dispatch ( virtual functions ) in C++. This project will...

Cargo tool for Rust-GCC

Make gccrs usable under the cargo build system in order to bridge the gap between rustc and gccrs. The project aims to create a base upon which to...

Static analysis for unreachable functions

Add an unreachable static analysis if a function is unused all functions after that point is unused. liveness analysis to get all reachable symbols...

2020

2 projects

Official year page

General Jobserver Client/Server Library

Both Link Time Optimization (LTO) and C++20 Modules will benefit from a closer interaction between build system and compiler. LTO benefits from...

Automatic Detection of Parallel Compilation Viability

In this project, we aim to detect whether compiling a file in parallel can improve the compilation performance. If so, then we proceed the...

2019

6 projects

Official year page

Make C/C++ not automatically promote memory_order_consume to memory_order_acquire

memory_order_consume gets automatically promoted to memory_order_acquire due to the difficulties faced by the compiler while tracing dependencies at...

Add new math.h and complex.h functions as built-ins.

GCC has support for built-in functions in C99/C11 standards along with features of IEEE standards. These functions do appropriate calculations...

Implementing OpenMP Work Stealing Scheduling

This project is to Implement work-stealing scheduling into the GCC implementation of the OpenMP standard. Task parallelism often yields highly...

Parallelize GCC with Threads

GCC alone is unable to compile a single large file in parallel, causing parallelization bottlenecks in some projects such as GCC itself. Here we...

7 Years Later: On vector<bool> and optimized Standard Algorithms in libstdc++

With the coming revival of bit utilities paper for the C++ Standard and the potential of a new suite of bit utilities coming from a header [5], the...

Implement Csmith fuzzer leveraging GCC C Extensions

The aim of this project is to add GCC C Extensions such as compiler attributes, vector extensions, etc. in Csmith. Run Csmith against GCC and report...

2018

1 project

Official year page

Textual Representation of LTO Object Files (Textual LTO dump tool project)

As far as I understand, the motivation for LTO framework was to enable cross-file interprocedural optimizations, and for this purpose an ipa pass is...

GNU Compiler Collection (GCC) GSoC history | HelpMeHack