Fix an insidious 64-bitness bug which was causing incorrectly optimised code.
authorDavid Given <dg@cowlark.com>
Thu, 17 Mar 2016 21:30:24 +0000 (22:30 +0100)
committerDavid Given <dg@cowlark.com>
Thu, 17 Mar 2016 21:30:24 +0000 (22:30 +0100)
--HG--
branch : default-branch

util/opt/peephole.c

index 236fe1b..ccce6a9 100644 (file)
@@ -417,14 +417,14 @@ eval_t compute(pexp) register expr_p pexp; {
        case EX_SFIT:
                mask = 0;
                for (i=leaf2.e_v.e_con - 1;i < 8*sizeof(offset); i++)
-                       mask |= 1<<i;
+                       mask |= ((offset)1)<<i;
                res.e_v.e_con = (leaf1.e_v.e_con&mask) == 0 ||
                                       (leaf1.e_v.e_con&mask) == mask;
                break;
        case EX_UFIT:
                mask = 0;
                for (i=leaf2.e_v.e_con;i < 8*sizeof(offset); i++)
-                       mask |= 1<<i;
+                       mask |= ((offset)1)<<i;
                res.e_v.e_con = (leaf1.e_v.e_con&mask) == 0;
                break;
        case EX_ROTATE: