www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 16223] New: BigUint: undefined shift for small instantiation


          Issue ID: 16223
           Summary: BigUint: undefined shift for small instantiation type
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: jbc.engelen gmail.com

Module std.internal.math.biguintcore contains the code:
    static BigUint mulInt(T = ulong)(BigUint x, T y) pure nothrow
        if (y==0 || x == 0) return BigUint(ZERO);
        uint hi = cast(uint)(y >>> 32);
The ">>> 32" is undefined for sizeof(T)*8 <= 32 (so for T = int, uint, char,
...). There should at least be a check that the function is not instantiated
for types equal or smaller than 32 bits.

No bug yet, because the only usage of mulInt is with T=ulong (bigint.d).

Jun 30 2016