Mercurial > projects > ddmd
comparison 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 |
comparison
equal
deleted
inserted
replaced
161:584dc990e12f | 162:438eaa11eed4 |
---|---|
14 import dmd.Id; | 14 import dmd.Id; |
15 import dmd.Type; | 15 import dmd.Type; |
16 | 16 |
17 import dmd.expression.shift_optimize; | 17 import dmd.expression.shift_optimize; |
18 import dmd.expression.Shl; | 18 import dmd.expression.Shl; |
19 import dmd.expression.Util; | |
19 | 20 |
20 import dmd.backend.OPER; | 21 import dmd.backend.OPER; |
21 | 22 |
22 class ShlExp : BinExp | 23 class ShlExp : BinExp |
23 { | 24 { |
60 return interpretCommon(istate, &Shl); | 61 return interpretCommon(istate, &Shl); |
61 } | 62 } |
62 | 63 |
63 override IntRange getIntRange() | 64 override IntRange getIntRange() |
64 { | 65 { |
65 assert(false); | 66 IntRange ir; |
67 IntRange ir1 = e1.getIntRange(); | |
68 IntRange ir2 = e2.getIntRange(); | |
69 | |
70 ir.imin = getMask(ir1.imin) << ir2.imin; | |
71 ir.imax = getMask(ir1.imax) << ir2.imax; | |
72 | |
73 ir.imin &= type.sizemask(); | |
74 ir.imax &= type.sizemask(); | |
75 | |
76 //printf("ShlExp: imin = x%llx, imax = x%llx\n", ir.imin, ir.imax); | |
77 //e1.dump(0); | |
78 | |
79 return ir; | |
66 } | 80 } |
67 | 81 |
68 override Identifier opId() | 82 override Identifier opId() |
69 { | 83 { |
70 return Id.shl; | 84 return Id.shl; |