From 33bf52f9881fb457f566478ade3f92550b91c6ba Mon Sep 17 00:00:00 2001 From: Maxime Dénès Date: Mon, 10 Nov 2014 14:23:56 +0100 Subject: Fix #3282: VM confused by let bindings in fixpoints. I'm afraid this fix is a bit heuristic, but it seems to generate correct code in all cases. --- kernel/cbytegen.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel') diff --git a/kernel/cbytegen.ml b/kernel/cbytegen.ml index 6fd1c689ff..7aad20599c 100644 --- a/kernel/cbytegen.ml +++ b/kernel/cbytegen.ml @@ -289,7 +289,7 @@ let add_grab arity lbl cont = else Krestart :: Klabel lbl :: Kgrab (arity - 1) :: cont let add_grabrec rec_arg arity lbl cont = - if Int.equal arity 1 then + if Int.equal arity 1 && rec_arg < arity then Klabel lbl :: Kgrabrec 0 :: Krestart :: cont else Krestart :: Klabel lbl :: Kgrabrec rec_arg :: -- cgit v1.2.3