@@ -305,22 +305,24 @@ let raw_unop ty op hte = make (Unop (ty, op, hte)) [@@inline]
305305
306306let normalize_eq_or_ne op (ty' , e1 , e2 ) =
307307 let make_relop lhs rhs = Relop (ty', op, lhs, rhs) in
308- let ty, ty2 = (ty e1, ty e2) in
309- assert (Ty. equal ty ty2);
310- match ty with
311- | Ty_bitv m ->
312- let binop = make (Binop (ty, Sub , e1, e2)) in
313- let zero = make (Val (Bitv (Bitvector. make Z. zero m))) in
314- make_relop binop zero
315- | Ty_int ->
316- let binop = make (Binop (ty, Sub , e1, e2)) in
317- let zero = make (Val (Int Int. zero)) in
318- make_relop binop zero
319- | Ty_real ->
320- let binop = make (Binop (ty, Sub , e1, e2)) in
321- let zero = make (Val (Real 0. )) in
322- make_relop binop zero
323- | _ -> make_relop e1 e2
308+ let ty1, ty2 = (ty e1, ty e2) in
309+ if not (Ty. equal ty1 ty2) then make_relop e1 e2
310+ else begin
311+ match ty1 with
312+ | Ty_bitv m ->
313+ let binop = make (Binop (ty1, Sub , e1, e2)) in
314+ let zero = make (Val (Bitv (Bitvector. make Z. zero m))) in
315+ make_relop binop zero
316+ | Ty_int ->
317+ let binop = make (Binop (ty1, Sub , e1, e2)) in
318+ let zero = make (Val (Int Int. zero)) in
319+ make_relop binop zero
320+ | Ty_real ->
321+ let binop = make (Binop (ty1, Sub , e1, e2)) in
322+ let zero = make (Val (Real 0. )) in
323+ make_relop binop zero
324+ | _ -> make_relop e1 e2
325+ end
324326
325327let negate_relop (hte : t ) : t =
326328 let e =
0 commit comments