Mercurial > projects > ddmd
diff dmd/ShlExp.d @ 162:438eaa11eed4
updated build script to use dmd2.039
some missing methods implemented
author | korDen |
---|---|
date | Tue, 21 Sep 2010 14:59:56 +0400 |
parents | 6caaf0256da1 |
children | e3afd1303184 |
line wrap: on
line diff
--- a/dmd/ShlExp.d Mon Sep 20 01:19:36 2010 +0400 +++ b/dmd/ShlExp.d Tue Sep 21 14:59:56 2010 +0400 @@ -16,6 +16,7 @@ import dmd.expression.shift_optimize; import dmd.expression.Shl; +import dmd.expression.Util; import dmd.backend.OPER; @@ -62,7 +63,20 @@ override IntRange getIntRange() { - assert(false); + IntRange ir; + IntRange ir1 = e1.getIntRange(); + IntRange ir2 = e2.getIntRange(); + + ir.imin = getMask(ir1.imin) << ir2.imin; + ir.imax = getMask(ir1.imax) << ir2.imax; + + ir.imin &= type.sizemask(); + ir.imax &= type.sizemask(); + + //printf("ShlExp: imin = x%llx, imax = x%llx\n", ir.imin, ir.imax); + //e1.dump(0); + + return ir; } override Identifier opId()