You probably haven't used professional compilers then... Yes, in the8 and 16-bit space some commercial compilers are worse than open source ones. However 10 year old ARM compilers _still_ generate better code than the latest GCC...
GCC is definitely getting better, but is it narrowing the gap? If you consider large C++ applications then the scope for improvement is enormous - I guess a factor 2 of improvement is achievable.
Applications grow about as fast as memory and performance do, so any improvements are immediately swallowed.
Interestingly in the 32-bit RISC space GCC is furthest behind. If you look at EEMBC or Spec for example you don't see (m)any uses of GCC.