Внешний интерфейс GCC превращает код в промежуточную внутреннюю форму, используемую GCC. Серверная часть GCC превращает эту промежуточную внутреннюю форму в окончательную форму, которую выводит компилятор.
Так, например, если у вас есть внешний интерфейс C++ и внешний интерфейс Java, вы можете принять ввод в C++ и Java. Если у вас есть серверная часть x86 и серверная часть MIPS, вы можете создавать исполняемые файлы для процессоров x86 и MIPS.
Если вы хотите добавить поддержку Go в GCC, вы должны написать интерфейс Go для GCC. Затем вы можете скомпилировать код Go для каждой платформы, поддерживаемой GCC.
Если вы хотите добавить поддержку GCC для нового процессора, вы бы написали новый сервер для этого процессора. Затем вы можете создать код для этого процессора, используя все языки, которые поддерживает GCC.