The clang static analyzer is the best you can find in the FOSS world and is constantly improving. LLVM itself is multi-target with a single compiler binary (llc), always handy for embedded developers. LLVM can target GPUs, and the resulting binaries wouldn't care if the host OS was Linux or Hurd. Clangs diagnostics are often better than GCC's but the GCC project is catching up fast in that area. Finally, LLVM offers a JIT that projects can use as a library. GCC offers compatibility, large target support, lots of compiler extensions, and great code generation.