Browse Source

optimized const

Nicolas Cannasse 14 years ago
parent
commit
56155e98a3
2 changed files with 10 additions and 0 deletions
  1. 3 0
      doc/CHANGES.txt
  2. 7 0
      optimizer.ml

+ 3 - 0
doc/CHANGES.txt

@@ -1,3 +1,6 @@
+2012-??-??: 3.00
+	all : optimized const == const and const != const (with different const types)
+
 2011-09-25: 2.08
 	js : added js.JQuery
 	all : added @:overload

+ 7 - 0
optimizer.ml

@@ -640,6 +640,13 @@ let rec reduce_loop ctx e =
 			| OpBoolAnd -> ebool (&&)
 			| OpBoolOr -> ebool (||)
 			| _ -> e)
+		| TConst a, TConst b when op = OpEq || op = OpNotEq ->
+			let ebool b =
+				{ e with eexpr = TConst (TBool (if op = OpEq then b else not b)) }
+			in
+			(match a, b with
+			| TInt a, TFloat b | TFloat b, TInt a -> ebool (Int32.to_float a = float_of_string b)
+			| _ -> ebool (a = b))
 		| TConst (TBool a), _ ->
 			(match op with
 			| OpBoolAnd -> if a then e2 else { e with eexpr = TConst (TBool false) }