From 4bcb657f0871b1ee3c6cc83575095fdb6dbd738b Mon Sep 17 00:00:00 2001 From: Gustavo Massaccesi Date: Tue, 5 Apr 2016 18:02:29 -0300 Subject: [PATCH] fix copy of rator in finish_optimize_application3 --- racket/src/racket/src/optimize.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/src/optimize.c b/racket/src/racket/src/optimize.c index 7e3d4d45ab..3ae16bc61b 100644 --- a/racket/src/racket/src/optimize.c +++ b/racket/src/racket/src/optimize.c @@ -4163,7 +4163,6 @@ static Scheme_Object *finish_optimize_application3(Scheme_App3_Rec *app, Optimiz check_known_both_try(info, app_o, rator, rand1, rand2, ">=", scheme_fixnum_p_proc, scheme_unsafe_fx_gt_eq_proc); check_known_both_try(info, app_o, rator, rand1, rand2, "min", scheme_fixnum_p_proc, scheme_unsafe_fx_min_proc); check_known_both_try(info, app_o, rator, rand1, rand2, "max", scheme_fixnum_p_proc, scheme_unsafe_fx_max_proc); - rator = app->rator; /* in case it was updated */ check_known_both_try(info, app_o, rator, rand1, rand2, "fx=", scheme_fixnum_p_proc, scheme_unsafe_fx_eq_proc); check_known_both_try(info, app_o, rator, rand1, rand2, "fx<", scheme_fixnum_p_proc, scheme_unsafe_fx_lt_proc); @@ -4173,6 +4172,8 @@ static Scheme_Object *finish_optimize_application3(Scheme_App3_Rec *app, Optimiz check_known_both_try(info, app_o, rator, rand1, rand2, "fxmin", scheme_fixnum_p_proc, scheme_unsafe_fx_min_proc); check_known_both_try(info, app_o, rator, rand1, rand2, "fxmax", scheme_fixnum_p_proc, scheme_unsafe_fx_max_proc); + rator = app->rator; /* in case it was updated */ + if (SCHEME_PRIM_PROC_OPT_FLAGS(rator) & SCHEME_PRIM_WANTS_REAL) check_known_both(info, app_o, rator, rand1, rand2, NULL, scheme_real_p_proc, (SCHEME_PRIM_PROC_OPT_FLAGS(rator) & SCHEME_PRIM_OMITTABLE_ON_GOOD_ARGS) ? scheme_true : NULL); @@ -4190,6 +4191,8 @@ static Scheme_Object *finish_optimize_application3(Scheme_App3_Rec *app, Optimiz check_known(info, app_o, rator, rand1, "for-each", scheme_procedure_p_proc, NULL); check_known(info, app_o, rator, rand1, "andmap", scheme_procedure_p_proc, NULL); check_known(info, app_o, rator, rand1, "ormap", scheme_procedure_p_proc, NULL); + + rator = app->rator; /* in case it was updated */ } register_local_argument_types(NULL, NULL, app, info);