Również pliki nagłówkowe biblioteki standardowej języka C nie są częścią GCC.
Kompilator GCC składa się z 3 głównych części: front endu, middle endu oraz back endu.
front end Dla każdego języka programowania obsługiwanego przez GCC istnieje oddzielny front end. Dzięki temu względnie łatwo można dodawać kompilatory do nowych języków. Plik z kodem źródłowym poddawany jest procesowi analizy składniowej za pomocą ręcznie zakodowanego parsera. W efekcie tego działania powstaje reprezentacja programu zwana AST (ang. abstract syntax tree), która jest następnie przetwarzana do postaci w pełni niezależnej od pierwotnie użytego języka programowania GENERIC lub GIMPLE.
middle end Na tym etapie kompilator dokonuje optymalizacji kodu polegającej na: usunięciu "martwego" kodu, który się nigdy nie wykona obliczeniu stałych wartości i zastąpieniu nimi wyrażeń zawartych w programie wyeliminowaniu kodu nadmiarowego wykonaniu innych optymalizacji
Reprezentacja kodu zamieniana jest z postaci GIMPLE do innej zwanej RTL (ang. Register Transfer Language).