http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50427
--- Comment #4 from Peter A. Bigot <bigotp at acm dot org> 2012-08-30 19:55:41 UTC --- Thanks for the suggestion. At the time this bug was reported, REGMODE_NATURAL_SIZE was not used as the target supported only 16-bit registers, so I don't believe that macro has anything to do with the behavior I noted. The current mspgcc back-end needs to support registers that are normally considered 16-bit, but can also hold 20-bit values (which must expand to 32-bits when in memory). I believe the use is proper and necessary for this situation. However, the back-end has a large number of other patches that were required to support this architecture, and it's possible that those contribute to why it works.