http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49186
Kazumoto Kojima <kkojima at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|sh4-linux-gnu |sh*-*-* Status|UNCONFIRMED |NEW Known to work| |4.2.5 Keywords| |wrong-code Last reconfirmed| |2011.05.27 21:50:14 Host|sh4-linux-gnu | Ever Confirmed|0 |1 Known to fail| |4.3.5, 4.4.5, 4.6.1, 4.7.0 Build|sh4-linux-gnu | --- Comment #3 from Kazumoto Kojima <kkojima at gcc dot gnu.org> 2011-05-27 21:50:14 UTC --- The patch below should fix the problem. --- ORIG/trunk/gcc/config/sh/sh.c 2011-05-27 14:51:19.000000000 +0900 +++ trunk/gcc/config/sh/sh.c 2011-05-27 19:28:06.000000000 +0900 @@ -2143,7 +2143,10 @@ expand_cbranchdi4 (rtx *operands, enum r else if (op2h != CONST0_RTX (SImode)) msw_taken = LTU; else - break; + { + msw_skip = swap_condition (LTU); + break; + } msw_skip = swap_condition (msw_taken); } break;