https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64516
--- Comment #3 from Markus F.X.J. Oberhumer <markus at oberhumer dot com> --- Just for reference, here is the expected result: $ clang -target armv5-unknown-linux-gnu -marm -mfloat-abi=soft --version clang version 3.5.1 (tags/RELEASE_351/final) Target: armv5-unknown-linux-gnu Thread model: posix $ clang -target armv5-unknown-linux-gnu -marm -mfloat-abi=soft -O2 -Wall -W -Wcast-align -c unaligned_load_bug.c $ arm-linux-gnueabihf-objdump -d unaligned_load_bug.o unaligned_load_bug.o: file format elf32-littlearm Disassembly of section .text: 00000000 <put16_unaligned>: 0: e5c01000 strb r1, [r0] 4: e1a01421 lsr r1, r1, #8 8: e5c01001 strb r1, [r0, #1] c: e12fff1e bx lr 00000010 <get16_unaligned>: 10: e5d01000 ldrb r1, [r0] 14: e5d00001 ldrb r0, [r0, #1] 18: e1810400 orr r0, r1, r0, lsl #8 1c: e12fff1e bx lr 00000020 <put16_aligned>: 20: e1c010b0 strh r1, [r0] 24: e12fff1e bx lr 00000028 <get16_aligned>: 28: e1d000b0 ldrh r0, [r0] 2c: e12fff1e bx lr