--untyped_local_labels assembler option
Causes the assembler not to set the Thumb bit for the address of a numeric local label referenced in an LDR pseudo instruction.
When this option is not used, if you reference a numeric local label in an LDR pseudo-instruction, and the label is in Thumb code, then the assembler sets the Thumb bit (bit 0) of the address. You can then use the address as the target for a BX or BLX instruction.
If you require the actual address of the numeric local label, without the Thumb bit set, then use this option.
When using this option, if you use the address in a branch (register) instruction, the assembler treats it as an ARM code address, causing the branch to arrive in ARM state, meaning it would interpret this code as ARM instructions.
THUMB ... 1 ... LDR r0,=%B1 ; r0 contains the address of numeric local label "1". ; Thumb bit is not set if --untyped_local_labels was ; used. ...