As I see it, there is only one reasonable choice for an alternative to gcc for ARM development, and that is clang/llvm. Clang is in many ways gcc's strongest competitor - and also its closest partner, as the developers work together on features such as the sanitizers. A key point here is that ARM have chosen clang/llvm as their compiler for the official ARM development tools of the future (replacing the Keil compiler). Of course, ARM continues to support gcc development - they want to sell cores, not compilers! But if you do change to clang in the future, you can expect your bitfields to continue working - clang make a point of keeping as good compatibility with gcc as possible.