Re: Why GNU?
Being free is relative for a company. Engineers are expensive too ;-). If a commercial package reduces the time needed to develop a product, it might be worth it. Most professional gui-like development environments are a bit easier to start with, but they are equally hard to master too (and then you're locked to a certain vendor).
One of the advantages of gcc is that it supports a lot of architectures and runs on a lot of platforms (Linux, bsd, Windows, ...). This makes it easy to set up servers for development, do batch/night builds, ... .
Most commercial packages are either limited in the number of architectures they support or will only work on Windows.
It is easier to write portable code when you can use the same compiler (yes, there will always be some differences between them). For instance, you can run test-cases, regression tests on a normal PC platform by compiling your code for a normal PC.
And an extra advantage is that you have a lot of extra tools for debugging and inspection of the created objects/binaries.
For me it is a reason not to choose for a certain CPU when no gcc toolchain is available.
Antharax