------- Comment #6 from ubizjak at gmail dot com 2010-08-29 19:20 ------- Some other examples:
char test(int a, int b, int i, int j) { return (i & 0xFF) + ((j & 0xFF00) >> 8); } movzbl %ch, %eax addl %edx, %eax ret char test(int a, int b, int i, int j) { return (i & 0xFF) - ((j & 0xFF00) >> 8); } movzbl %ch, %ecx movl %edx, %eax subb %cl, %al -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45434