http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50182
--- Comment #3 from davidxl <xinliangli at gmail dot com> 2011-08-25 00:13:00
UTC ---
Caused by differences in FE generated code:
46:
D.6887 = (int) D.6886;
D.6888 = custom_constant_add<signed char>::do_shift (D.6887);
D.6889 = (unsigned char) D.6888;
result.8 = (unsigned char) result;
D.6891 = D.6889 + result.8;
result = (signed char) D.6891;
n = n + 1;
trunk:
D.6938 = (int) D.6937;
D.6874 = custom_constant_add<signed char>::do_shift (D.6938);
D.6939 = (int) result; <-- promoted to int
D.6940 = (int) D.6874; <---promoted to int
D.6941 = D.6939 + D.6940;
result = (signed char) D.6941;
n = n + 1;