diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/unboxed-let.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/unboxed-let.rkt index 1575749a..3f77fd9d 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/unboxed-let.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/unboxed-let.rkt @@ -97,16 +97,17 @@ [(vs rhs:opt-expr) #'((vs rhs.opt))])))) (define-syntax-class unboxed-clauses - #:attributes ([bindings 1]) + #:attributes (bindings) (pattern (clauses:unboxed-clause ...) - #:with (bindings ...) (template ((?@ . clauses.bindings) ...))))] + #:attr bindings (delay (template ((?@ . clauses.bindings) ...)))))] - #:with opt + #:attr opt (syntax-parse #'(clause ...) [clauses:unboxed-clauses - (quasisyntax/loc/origin - this-syntax #'letk.kw - (letk.key ... (clauses.bindings ...) body.opt ...))]))) + (delay + (quasisyntax/loc/origin + this-syntax #'letk.kw + (letk.key ... clauses.bindings body.opt ...)))]))) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/mandelbrot.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/mandelbrot.rkt index fceb84c6..dbc2fbab 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/mandelbrot.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/mandelbrot.rkt @@ -5,7 +5,6 @@ TR info: mandelbrot.rkt 10:18 (* 2.0 y) -- possible exact real arith TR info: mandelbrot.rkt 11:15 (/ (* 2.0 x) n) -- possible exact real arith TR info: mandelbrot.rkt 11:18 (* 2.0 x) -- possible exact real arith TR info: mandelbrot.rkt 21:28 (* 2 zr zi) -- possible exact real arith -TR info: mandelbrot.rkt 21:28 (* 2 zr zi) -- possible exact real arith TR missed opt: mandelbrot.rkt 10:12 (- (/ (* 2.0 y) n) 1.0) -- all args float-arg-expr, result not Float -- caused by: 10:15 (/ (* 2.0 y) n) TR missed opt: mandelbrot.rkt 10:12 (- (/ (* 2.0 y) n) 1.0) -- exact ops inside float expr -- caused by: 10:15 (/ (* 2.0 y) n) TR missed opt: mandelbrot.rkt 10:15 (/ (* 2.0 y) n) -- all args float-arg-expr, result not Float -- caused by: 10:18 (* 2.0 y), 10:28 n @@ -15,20 +14,12 @@ TR missed opt: mandelbrot.rkt 11:12 (- (/ (* 2.0 x) n) 1.5) -- exact ops inside TR missed opt: mandelbrot.rkt 11:15 (/ (* 2.0 x) n) -- all args float-arg-expr, result not Float -- caused by: 11:18 (* 2.0 x), 11:28 n TR missed opt: mandelbrot.rkt 11:18 (* 2.0 x) -- all args float-arg-expr, result not Float -- caused by: 11:25 x TR missed opt: mandelbrot.rkt 18:14 (> (+ zrq ziq) 4) -- generic comparison -- caused by: 18:29 4 -TR missed opt: mandelbrot.rkt 18:14 (> (+ zrq ziq) 4) -- generic comparison -- caused by: 18:29 4 -TR missed opt: mandelbrot.rkt 21:25 (- (* 2 zr zi) ci) -- all args float-arg-expr, result not Float -- caused by: 21:28 (* 2 zr zi) TR missed opt: mandelbrot.rkt 21:25 (- (* 2 zr zi) ci) -- all args float-arg-expr, result not Float -- caused by: 21:28 (* 2 zr zi) TR missed opt: mandelbrot.rkt 21:28 (* 2 zr zi) -- all args float-arg-expr, result not Float -- caused by: 21:31 2 -TR missed opt: mandelbrot.rkt 21:28 (* 2 zr zi) -- all args float-arg-expr, result not Float -- caused by: 21:31 2 -TR opt: mandelbrot.rkt 15:21 (* zr zr) -- binary float TR opt: mandelbrot.rkt 15:21 (* zr zr) -- binary float TR opt: mandelbrot.rkt 16:21 (* zi zi) -- binary float -TR opt: mandelbrot.rkt 16:21 (* zi zi) -- binary float -TR opt: mandelbrot.rkt 18:17 (+ zrq ziq) -- binary float TR opt: mandelbrot.rkt 18:17 (+ zrq ziq) -- binary float TR opt: mandelbrot.rkt 20:25 (+ (- zrq ziq) cr) -- binary float -TR opt: mandelbrot.rkt 20:25 (+ (- zrq ziq) cr) -- binary float -TR opt: mandelbrot.rkt 20:28 (- zrq ziq) -- binary float TR opt: mandelbrot.rkt 20:28 (- zrq ziq) -- binary float END "" diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/marketplace-struct.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/marketplace-struct.rkt index 87504837..0ef8ed62 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/marketplace-struct.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/missed-optimizations/marketplace-struct.rkt @@ -7,7 +7,6 @@ TR info: marketplace-struct.rkt 96:3 vm -- struct constructor TR missed opt: marketplace-struct.rkt 118:34 (in-hash-keys (vm-processes state)) -- non-specialized for clause TR missed opt: marketplace-struct.rkt 127:32 (in-hash-keys (vm-processes state)) -- non-specialized for clause TR missed opt: marketplace-struct.rkt 132:46 (in-hash-keys (process-endpoints p)) -- non-specialized for clause -TR missed opt: marketplace-struct.rkt 132:46 (in-hash-keys (process-endpoints p)) -- non-specialized for clause TR opt: marketplace-struct.rkt 103:2 (struct-copy vm state (processes (hash-set (vm-processes state) (Process-pid wp) wp))) -- dead else branch TR opt: marketplace-struct.rkt 103:2 (struct-copy vm state (processes (hash-set (vm-processes state) (Process-pid wp) wp))) -- struct ref TR opt: marketplace-struct.rkt 103:45 (vm-processes state) -- struct ref @@ -18,10 +17,6 @@ TR opt: marketplace-struct.rkt 112:60 (vm-processes state) -- struct ref TR opt: marketplace-struct.rkt 118:48 (vm-processes state) -- struct ref TR opt: marketplace-struct.rkt 127:46 (vm-processes state) -- struct ref TR opt: marketplace-struct.rkt 132:60 (process-endpoints p) -- struct ref -TR opt: marketplace-struct.rkt 132:60 (process-endpoints p) -- struct ref -TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref -TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref -TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref END "" diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/dead-inf-comp.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/dead-inf-comp.rkt index a56ee652..f2eda5d5 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/dead-inf-comp.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/dead-inf-comp.rkt @@ -3,7 +3,6 @@ TR info: dead-inf-comp.rkt 102:4 (>= -inf.f rat) -- possible exact real arith TR info: dead-inf-comp.rkt 105:4 (>= rat -inf.f) -- possible exact real arith TR info: dead-inf-comp.rkt 110:41 displayln -- hidden parameter -TR info: dead-inf-comp.rkt 110:41 displayln -- hidden parameter TR info: dead-inf-comp.rkt 57:4 (< rat +inf.f) -- possible exact real arith TR info: dead-inf-comp.rkt 60:4 (< +inf.f rat) -- possible exact real arith TR info: dead-inf-comp.rkt 63:4 (< rat -inf.f) -- possible exact real arith @@ -20,7 +19,6 @@ TR info: dead-inf-comp.rkt 96:4 (>= +inf.f rat) -- possible exact real arith TR info: dead-inf-comp.rkt 99:4 (>= rat +inf.f) -- possible exact real arith TR missed opt: dead-inf-comp.rkt 10:4 (< rat -inf.0) -- generic comparison -- caused by: 10:7 rat TR missed opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- generic comparison -- caused by: 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -TR missed opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- generic comparison -- caused by: 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) TR missed opt: dead-inf-comp.rkt 13:4 (< -inf.0 rat) -- generic comparison -- caused by: 13:14 rat TR missed opt: dead-inf-comp.rkt 17:4 (> +inf.0 rat) -- generic comparison -- caused by: 17:14 rat TR missed opt: dead-inf-comp.rkt 20:4 (> rat +inf.0) -- generic comparison -- caused by: 20:7 rat @@ -45,9 +43,6 @@ TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (display TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch -TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch -TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch -TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch TR opt: dead-inf-comp.rkt 110:36 3 -- in-range TR opt: dead-inf-comp.rkt 11:4 (quote dead) -- dead then branch TR opt: dead-inf-comp.rkt 15:4 (quote dead) -- dead else branch diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/in-bytes.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/in-bytes.rkt index 5f098169..3e5afe9e 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/in-bytes.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/in-bytes.rkt @@ -1,7 +1,6 @@ #;#; #<