What are differences in ARM Compiler and GCC?

ARM Compiler: By combining microarchitecture-specific instruction scheduling, whole-program optimization strategies, and finely tuned libraries, Arm Compiler significantly accelerates the execution time across a wide variety of workloads. In fact, in some large industrial and automotive bodies of code, performance gains over its previous generation exceed 30 percent. This is a result of our all-encompassing optimization investment targeting complex and realistic embedded code, as opposed to focusing on a single small CPU benchmark.

The GNU compilers are highly optimizing compilers that support both the C and C++ languages. The GNU C compiler (gcc) supports the C language, while the GNU C++ compiler (G++) supports the C++ language. And so, there are actually two GNU compilers in the toolchain, not one. The GNU C/C++ compilers have a number of extensions that make them well suited for embedded development, including fine-grained control using many command-line options, inline assembly, and compiler #pragmas that helps control the compiler behavior in great detail. Furthermore, the GNU compilers have extensive support for a large number of target processors and language dialect standards.