https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82729
--- Comment #3 from Peter Cordes <peter at cordes dot ca> ---
Oh also, why is MSP430 using 3 byte-stores instead of a mov.w + mov.b for
storing ab[]? (on the godbolt link in the initial report)
# msp430-gcc 6.2.1.16) 6.2.1 20161212
MOV.W #25185, 6(R1)
MOV.W #99, 8(R1) # abc[]
MOV.B #97, 3(R1)
MOV.B #98, 4(R1)
MOV.B #0, 5(R1) # ab[]
MOV.B #97, 1(R1)
MOV.B #0, 2(R1) # a[]
Even if alignment is required (IDK), either the first two or last two mov.b
instructions for ab[] could combine into a mov.w, like is done for abc[]. Is
that a target bug?
MSP430 is on Godbolt and it's not a RISC with word size > largest immediate, so
I was looking at it to see if it was just an x86 missed optimization.
Like I was saying for ARM, gcc seems to do a poor job on many RISC ISAs with
this, given the redundancy between strings.