Right now LLVM is fashionable and gcc is not. Little details, as in actually generating better code, are minor in comparison.
- You can cross-compile from anything to Windows. (To MSVC ABI!)
Whereas llvm/clang was designed as a library to be open and extensible, which lead to a lot of tooling being built around it.
Unrelated to license, clang also has far better error messages than gcc.
This was true a number of years ago, but I believe GCC's diagnostics have gotten much better in response to competition and don't believe it to be true anymore (although my experience is with C code, not C++ — maybe Clang is better there).
Another distinction is that GCC continues to hold a significant lead in producing accurate debuginfo, which is invaluable to me as a developer.
Originally FSF did not want to make it easy let GCC store its intermediate language and read it back. That was because it would let others to build proprietary frontends and back-ends which is against RMS' vision. This has changed and LTO does precisely that (and indeed in addition to technical difficulties this political issue delayed its arrival in GCC). So this political block of extensibility is long gone (and I am happy for that).
A lot has changed in compilation between mid 1980's GCC was started and early 2000's. LLVM design reflects its time. Almost 20 years passed since that and both projects needs to evolve and develop strategies of doing so.