http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56439
Chung-Ju Wu <jasonwucj at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jasonwucj at gmail dot com --- Comment #5 from Chung-Ju Wu <jasonwucj at gmail dot com> 2013-02-25 06:32:05 UTC --- (In reply to comment #4) > Wouldn't that be a reason /against/ doing this: > > mov r24,r4 > lsl r24 > mov r4,r24 > > instead of just lsl r4? Just guess... Is that possibly related to zero_extend RTL transformation? Either in gcc optimization, or the design of machine description? Try to use this declaration (use 'int' instead of 'char'): register unsigned int foo asm ("r4"); Is there any difference on code generation?