[PATCH] Fix undefined behaviour in rl78 port
authorJeff Law <law@redhat.com>
Tue, 29 Sep 2015 16:28:51 +0000 (10:28 -0600)
committerJeff Law <law@gcc.gnu.org>
Tue, 29 Sep 2015 16:28:51 +0000 (10:28 -0600)
[PATCH] Fix undefined behaviour in rl78 port
        * config/rl78/rl78-expand.md (movqi): Fix undefined left shift
        behaviour.

From-SVN: r228252

gcc/ChangeLog
gcc/config/rl78/rl78-expand.md

index 1b9985af4daaefe45bcbed304254e50133d17a3c..79dc89fafa84ba8ba97118af97e0d4695df3b621 100644 (file)
@@ -1,5 +1,8 @@
 2015-09-29  Jeff Law  <law@redhat.com>
 
+       * config/rl78/rl78-expand.md (movqi): Fix undefined left shift
+       behaviour.
+
        * config/msp430/msp430.c (msp430_legitimate_constant): Fix undefined
        left shift behaviour.
        * config/msp430/constraints.md ('L' constraint): Similarly.
index 0335a4d2a68144669f93d04f25826fcb6524627e..67e6620bdf6642e2e1df4f324a17ecb1fc8011e9 100644 (file)
@@ -48,7 +48,7 @@
        && ! REG_P (operands[0]))
        operands[1] = copy_to_mode_reg (QImode, operands[1]);
 
-    if (CONST_INT_P (operands[1]) && ! IN_RANGE (INTVAL (operands[1]), (-1 << 8) + 1, (1 << 8) - 1))
+    if (CONST_INT_P (operands[1]) && ! IN_RANGE (INTVAL (operands[1]), (HOST_WIDE_INT_M1U << 8) + 1, (1 << 8) - 1))
       FAIL;
   }
 )