http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60486
--- Comment #4 from Darryl Piper <darryl.piper at gmail dot com> --- details also posted on avrfreaks.net http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=1143389 the bug has existed since the code base copy from 4.7.2 to create the vanilla 4.8.0 so all the 4.8.[0,1,2] suffer this bug namely these lines in avr_out_plus are the culprits IMO. /* Work out the shortest sequence. */ avr_out_plus_1 (op, &len_minus, MINUS, &cc_plus, code_sat, sign, out_label); avr_out_plus_1 (op, &len_plus, PLUS, &cc_minus, code_sat, sign, out_label); notice the &cc_plus and &cc_minus being the wrong way around.