(Also, it's true: In many cases clang produces significantly better
error messages and warnings than gcc does.)
I know that one of clang's big "bullet points" is good error messages,
but my experience (I use [modern versions of] both compilers) the
difference isn't particularly great in practice. There are certain
very specific scenarios where clang definitely does produce nicer
messages (e.g. it tracks macro expansions better so it can reference
the offending macro when an error comes from one), but I've found them
to be relatively rare. [remember, gcc diagnostics keep getting better
too!]
Perhaps the major (which in many cases isn't so "major") problem
with clang is that it's not as good at optimizing as gcc is. Even
gcc 4.2 produces faster code than clang, not to talk about the
latest gcc (which has several significant improvements on that
department).
Clang trunk is catching up though ... I used to avoid clang for
anything but testing, because clang-generated code that ran at
literally half the speed of gcc-generated code (on some speed critical
code I care about) -- but recently the clang trunk is showing much
better results.
I think both are very usable compilers these days, if you use the
recentish versions. Gcc optimizes somewhat better, and has better
support for C++11, but clang is a bit faster in compilation (~10-15%
IME), and sometimes does offer better diagnostics. [I find it useful
to compile with both, because using multiple independent compiler
implementations helps to identify portability problems in my own code,
which might slip through the cracks in a single compiler.]