GCC was first released in 1987 when it was called the GNU C Compiler, a couple of months after it was released it was extended to support C++ too. Nowadays it supports other languages than C or C++.
Having been in use and constant development for more than 20 years it has reached a state of maturity and stability. The fact that it's so old also means that there are countless resources out there for people who want to use it.
Since it's so old and very popular it has been ported to almost any architecture imaginable. This means that it's probably compatible with even the most obscure and unheard hardware.
Since GCC uses a lot of heuristics for increased performance (which is a good thing), it generally is not great when doing source-level optimization (such as loop unrolling). Even the smallest source code change can make GCC to generate a completely different output.