https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87373
--- Comment #29 from Murat Ursavaş <murat.ursavas at gmail dot com> --- And just out of curiosity, why the compiler loads zero to the register and then OR's with the value? 00029e3c: movs r2,#0x0 00029e3e: orr r2,r2,#0xb Why doesn't it load directly the necessary value? Like, 00029e3c: movs r2,#0xb I know ARM arch needs load/store mechanism for the RAM but why this additional task for a register?