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;