From 75e201cc0652f6c1eb3bc5d8e4a5aa8f0b9ff652 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 11 Jul 2014 13:52:00 +0100 Subject: [PATCH] optimizer: fix tail-position bug in recent optimizer change Fixes a problem with a7a912eeab. The existing test suite caught this bug, but I somehow overlooked the failure report. --- racket/src/racket/src/schpriv.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racket/src/racket/src/schpriv.h b/racket/src/racket/src/schpriv.h index e691d84db1..d40351338b 100644 --- a/racket/src/racket/src/schpriv.h +++ b/racket/src/racket/src/schpriv.h @@ -2879,13 +2879,13 @@ Scheme_Object *scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, in #define OPT_CONTEXT_BOOLEAN 0x1 /* Context might duplicate the expression: */ #define OPT_CONTEXT_NO_SINGLE 0x2 -/* Context checks that result is a single value: */ +/* Context checks that result is a single value and is non-tail w.r.t. to same clock as bindig: */ #define OPT_CONTEXT_SINGLED 0x4 #define OPT_CONTEXT_TYPE_SHIFT 4 #define OPT_CONTEXT_TYPE_MASK (SCHEME_MAX_LOCAL_TYPE_MASK << OPT_CONTEXT_TYPE_SHIFT) #define OPT_CONTEXT_TYPE(oc) ((oc & OPT_CONTEXT_TYPE_MASK) >> OPT_CONTEXT_TYPE_SHIFT) -#define scheme_optimize_result_context(c) (c & (~(OPT_CONTEXT_TYPE_MASK | OPT_CONTEXT_NO_SINGLE))) +#define scheme_optimize_result_context(c) (c & (~(OPT_CONTEXT_TYPE_MASK | OPT_CONTEXT_NO_SINGLE | OPT_CONTEXT_SINGLED))) #define scheme_optimize_tail_context(c) scheme_optimize_result_context(c) Scheme_Object *scheme_optimize_apply_values(Scheme_Object *f, Scheme_Object *e,