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()