http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49515
--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2011-06-24 10:01:28 UTC --- (In reply to comment #1) > The code difference you show cannot be the real problem. The register > allocator has made a poorer choice in 4.7, leading to an extra move, > but the code that you show is exactly equivalent. The move is actually a sign extension instruction, so 4.7 code looks more correct to me.