From f835e463087f18917d705978691d59d820747341 Mon Sep 17 00:00:00 2001 From: Josh Berdine Date: Wed, 2 Dec 2020 13:46:14 -0800 Subject: [PATCH] [sledge] Fix form of failure in interval analysis Summary: Overwritten variables in move instructions are not impossible. Since Domain_itv does not handle them, the check should be a `todo` rather than an `assert false`. Reviewed By: jvillard Differential Revision: D25146168 fbshipit-source-id: 13d8587c7 --- sledge/cli/domain_itv.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sledge/cli/domain_itv.ml b/sledge/cli/domain_itv.ml index 2871f7329..8dba904e1 100644 --- a/sledge/cli/domain_itv.ml +++ b/sledge/cli/domain_itv.ml @@ -180,7 +180,8 @@ let exec_move move_vec q = ( Llair.Reg.Set.add r defs , Llair.Exp.fold_regs ~f:Llair.Reg.Set.add e uses ) ) in - assert (Llair.Reg.Set.disjoint defs uses) ; + if not (Llair.Reg.Set.disjoint defs uses) then + todo "overwritten variables in Domain_itv" () ; IArray.fold ~f:(fun (r, e) q -> assign r e q) move_vec q let exec_inst i q =