We used this to develop an application that was required to be compatible with both 32-bit ARM Cortex M3, as well as 64-bit ARM Cortex A7 devices (a microcontroller). It worked fine, but if you want all features available from other compilers such as GCC or Keil MDK/MDK2 then there are others out there. Just use what works best for your project! Our product had two versions - one that ran on older hardware without support for newer instructions, and another version that supported those new instructions. The software needed to run them both would have been too large, so we developed an interface layer between our main codebase and the target device using IAR's tools.