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;

Reply via email to