Actually, the current handling of 6.4.2 is incorrect. It is *supposed* to be a quoted char. If you look at the example provided in 6.4.10, you will notice that this: #if __ARCH_ARM_PROFILE == 'R' Fixed that as well. That was a great catch! http://reviews.llvm.org/D4146