On Tue, 21 Nov 2023 at 10:58, Tobias Burnus <tob...@codesourcery.com> wrote: > > Hi Tom, > > On 21.11.23 11:32, Hamish Baxter via Gcc wrote: > > I am a current Computer Science student who enjoys C programming with an > > interest in learning compilers, and am looking to contribute to an > > open source project. > > > > I am not sure exactly where to start or how it works: perhaps testing / > > technical documentation / bug fixes? Is it possible to please have some > > guidance or perhaps I can assist someone with their current project? > > I think the first question is at which part of the compiler you would > like to work on: > > * The front end: C, C++, Fortran, Ada, Rust, Go, Modula2, ... > > * Middle end such as diagnostic (e.g. analyzer), optimizations (loops, > IPA, pattern-based, ...) > > * Backend: Code for a specific hardware > > Additionally, there is: > > * library related work (including C++'s STL) – usually related to > front-end work > > and work on > > * language extensions like OpenMP or OpenACC. > > https://gcc.gnu.org/wiki/SummerOfCode give some idea – those are for > summer of code projects and outside of such a project, some other tasks > (smaller and more diverse) might make more sense, but at least it gives > an idea. > > Some documentation on GCC internals and tutorials also exists, but I it > makes sense for you to decide rough area interests you most – as the > backend documentation is probably less useful if you want to work on the > FE or vice versa. > > What I regard as good starting point is indeed bugfixing. When guiding > summer of code students, I always tried to find some small bug-fix > project to get started and have some simple but complete task (building > GCC; writing the patch; adding testcase; testing it; submitting the full > patch). While there might be some simple feature tasks, I usually found > it the easiest to to propose fixing an internal-compiler error (ICE) for > invalid code (ice-on-invalid-code) or adding accepts-invalid diagnostic > – those tend to be easier and there are more often lower-hanging fruits > as wrong-code bugs or reject-valid / ice-on-valid-code tend to get more > attention and are quicker fixed if easy. (*)
Another good place to start is the https://gcc.gnu.org/wiki/GettingStarted wiki page (which the SummerOfCode page also links to).