diff --git a/pkgs/racket-test-core/tests/racket/optimize.rktl b/pkgs/racket-test-core/tests/racket/optimize.rktl index 595dc2888c..0af03d685e 100644 --- a/pkgs/racket-test-core/tests/racket/optimize.rktl +++ b/pkgs/racket-test-core/tests/racket/optimize.rktl @@ -4339,6 +4339,13 @@ (check-number-op-unary 'sub1) (check-number-op-unary 'abs)) +(test-comp '(lambda () (-) (void)) + '(lambda () (void)) + #f) +(test-comp '(lambda () (/) (void)) + '(lambda () (void)) + #f) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Check elimination of dead code after error (test-comp '(lambda () (random) (error 'error)) diff --git a/racket/src/racket/src/optimize.c b/racket/src/racket/src/optimize.c index 14c7485bba..11887408bd 100644 --- a/racket/src/racket/src/optimize.c +++ b/racket/src/racket/src/optimize.c @@ -3431,7 +3431,9 @@ static Scheme_Object *finish_optimize_application(Scheme_App_Rec *app, Optimize_ info->single_result = -info->single_result; } - if (SCHEME_PRIMP(app->args[0])) { + if (SCHEME_PRIMP(app->args[0]) + && (app->num_args >= ((Scheme_Primitive_Proc *)app->args[0])->mina) + && (app->num_args <= ((Scheme_Primitive_Proc *)app->args[0])->mu.maxa)) { Scheme_Object *app_o = (Scheme_Object *)app, *rator = app->args[0]; Scheme_Object *rand1 = NULL, *rand2 = NULL;