Skip to content

Commit 0edc1c7

Browse files
committed
CSE of boolean not
1 parent 4a714a9 commit 0edc1c7

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

middle_end/flambda/simplify/simplify_unary_primitive.ml

+10-1
Original file line numberDiff line numberDiff line change
@@ -349,11 +349,20 @@ module Simplify_int_conv_naked_int64 = Make_simplify_int_conv (A.For_int64s)
349349
module Simplify_int_conv_naked_nativeint =
350350
Make_simplify_int_conv (A.For_nativeints)
351351

352-
let simplify_boolean_not dacc ~original_term ~arg:_ ~arg_ty ~result_var =
352+
let simplify_boolean_not dacc ~original_term ~arg ~arg_ty ~result_var =
353353
let result = Name.var (Var_in_binding_pos.var result_var) in
354354
let denv = DA.denv dacc in
355355
let typing_env = DE.typing_env denv in
356356
let proof = T.prove_equals_tagged_immediates typing_env arg_ty in
357+
let dacc =
358+
DA.map_denv dacc ~f:(fun denv ->
359+
let prim : P.t =
360+
Unary (Boolean_not,
361+
Simple.var (Var_in_binding_pos.var result_var))
362+
in
363+
DE.add_cse denv (P.Eligible_for_cse.create_exn prim)
364+
~bound_to:arg)
365+
in
357366
let result_unknown () =
358367
let ty = T.unknown K.value in
359368
let env_extension = TEE.one_equation result ty in

0 commit comments

Comments
 (0)