GCC is a widely used open source compiler system developed by the GNU Project. It compiles C, C++, Java, Fortran and other languages. GCC has undergone major changes to its structure since 2005, including the addition of GENERIC and GIMPLE intermediate representations between the front end and back end. The front end parses source code into ASTs, then GIMPLE trees are optimized through many passes in the middle end before being converted to RTL for the back end code generation.