It is a buggy compiler and it is a wonder that it works as well as it does. It is no surprise that LLVM is better.
As for people working on scripting languages instead, it is more that they were forced to work on scripting languages because the GCC codebase was designed to be incomprehensible to all but a select few. This is obvious if you try reading GCC. If you have not, I highly recommend that you pick some random files and begin reading. I can read random parts of the Linux kernel and generally follow along what is being done. I can do the same with LLVM to some extent, which I know since I have patched it locally in the past. I cannot do that with GCC. It is a mess. :/
I personally have no particular feelings either way about GCC; I don't write code any more, and when I did, I barely used compilers or xNix to do it.
All I am doing is responding to @catiopatio's comment: that apparently it was good _enough_ to inhibit competitors for a decade and a half.
The economics of FOSS are not yet well understood (and FWIW, I think @catiopatio is totally wrong about the GPL). There were lots and lots of compilers in the proprietary space, and aggressive competition was the norm.
The headhunting of Anders Hejlsberg from Borland to Microsoft shifted the entire competitive market of programming languages for _decades_, but FOSS people don't tend to notice such things.
(He developed Delphi. Without him, Borland floundered and died. With him, MS grafted a compiler onto VB, making a vastly successful product, and then abandoned it, and came up with .NET and C# instead, muddying the waters in ways that still shape the industry.)
> with one good compiler, there was less pressure to do so, and so people worked on scripting languages instead.
See this comment regarding your idea that GCC is a good compiler:
https://news.ycombinator.com/item?id=34008284
It is a buggy compiler and it is a wonder that it works as well as it does. It is no surprise that LLVM is better.
As for people working on scripting languages instead, it is more that they were forced to work on scripting languages because the GCC codebase was designed to be incomprehensible to all but a select few. This is obvious if you try reading GCC. If you have not, I highly recommend that you pick some random files and begin reading. I can read random parts of the Linux kernel and generally follow along what is being done. I can do the same with LLVM to some extent, which I know since I have patched it locally in the past. I cannot do that with GCC. It is a mess. :/