LLVM's design is fundamentally superior in this context - LLVM can "fork" itself inside an LLVM compiler whereas the way GCC is designed basically means all the hooks don't really like having multiple backends connected to the same frontend. It's probably possible, but it's something where GCC's baggage does actually hold it back even if the basic algorithms are exactly the same (and better implemented sometimes, GCC is still king across the whole benchmark suite even if LLVM is increasingly good on a few).
GCC forks, I am aware are nothing new, but the future of programming is not multiple monolithic compilers but rather (say) C++ (or D, e.g. DCompute would be a real hack if implemented on GCC) with shader and WASM bytecode output as part of one compiler.
GCC can and does do the stuff above but it's just a bit hacky and "please scroll through our mailing list" whereas LLVM is much more welcoming and is a proper library to be consumed.