I tried to improve merging of constant stores. In particular, cases like this (x86):
movb (%esp)
movb 1(%esp) -> movw (%esp)
mov 2(%esp) mov 2(%esp)
Also there is opportunity to go further:
movb (%esp)
movb 1(%esp) -> movw (%esp) -> mov (%esp)
movw 2(%esp) movw 2(%esp)
but after first merge a token node comes up in chain and I'm not sure how to process it properly.