If you are looking for a lightweight and fast C compiler TinyCC (see also Wikipedia) is definitely worth a look.
There are some downsides, though. It only performs very few optimizations and the latest stable version only supports the x86 architecture although there is already experimental x86_64 support in the development branch.
For now, I would probably stick with GCC for any serious programs considering these flaws of TinyCC.
The only use-case where TCC could come in really handy nowadays is to use it as an interpreter for C code. I have not measured the performance but I can imagine that a small "script" in C can smootly compete with Bash code (in terms of parsing and execution speed).
The developers even succeeded in interpreting a Linux 2.4 kernel in realtime and boot it right away! There is an ISO image floating around which just works perfectly in Qemu.
As GCC is based on code that dates back several decades ago when there was not much knowledge on code structuring, appropriate use of design patterns etc., the GCC developers are maintaining a rusty and error-prone basis. Unfortunately the code is mess and there is no alternative to a complete rewrite. That probably also the reason why the developers of LLVM also came up with Clang and started from ground-up. In the long-term I really hope that there is going to be a proper replacement for GCC which does everything conceptually right from the beginning. Clang sounds like a worthy replacement although I am not completely comfortable with their choice of using C++ but that is another topic. :)