Make unboxed let not double optimize. TODO fix logs.

This commit is contained in:
Eric Dobson 2013-09-05 21:38:43 -07:00
parent 1a682c389a
commit 10dc9afc33
20 changed files with 254 additions and 332 deletions

View File

@ -1,6 +1,6 @@
#lang racket/base
(require syntax/parse syntax/stx syntax/id-table racket/dict
(require syntax/parse syntax/stx syntax/id-table racket/dict racket/promise
racket/syntax racket/match syntax/parse/experimental/specialize
"../utils/utils.rkt" racket/unsafe/ops unstable/sequence
(for-template racket/base racket/math racket/flonum racket/unsafe/ops)
@ -9,7 +9,7 @@
(optimizer utils numeric-utils logging float))
(provide float-complex-opt-expr
float-complex-arith-opt-expr
float-complex-arith-expr
unboxed-float-complex-opt-expr
float-complex-call-site-opt-expr arity-raising-opt-msg
unboxed-vars-table unboxed-funs-table)
@ -415,20 +415,28 @@
(pattern :float-complex-arith-opt-expr))
(define-syntax-class float-complex-arith-opt-expr
;; Supports not optimizing in order to support using it to check for optimizable expressions.
;; Thus side effects are hidden behind the optimizing argument and referencing the opt attribute.
(define-syntax-class (float-complex-arith-expr* optimizing)
#:commit
#:attributes (opt)
(pattern (#%plain-app op:float-complex->float-op e:expr ...)
#:when (subtypeof? this-syntax -Flonum)
#:with exp:unboxed-float-complex-opt-expr this-syntax
#:with opt #`(let*-values (exp.bindings ...) exp.real-binding))
#:attr opt
(delay
(syntax-parse this-syntax
(exp:unboxed-float-complex-opt-expr
#'(let*-values (exp.bindings ...) exp.real-binding)))))
(pattern (#%plain-app op:float-complex-op e:expr ...)
#:when (subtypeof? this-syntax -FloatComplex)
#:with exp:unboxed-float-complex-opt-expr this-syntax
#:with opt #`(let*-values (exp.bindings ...)
(unsafe-make-flrectangular exp.real-binding exp.imag-binding)))
#:attr opt
(delay
(syntax-parse this-syntax
(exp:unboxed-float-complex-opt-expr
#'(let*-values (exp.bindings ...)
(unsafe-make-flrectangular exp.real-binding exp.imag-binding))))))
;; division is special. can only optimize if none of the arguments can be exact 0.
;; otherwise, optimization is unsound (we'd give a result where we're supposed to throw an error)
@ -443,7 +451,7 @@
c)])
(define safe-to-opt? (null? irritants))
;; result is Float-Complex, but unsafe to optimize, missed optimization
(unless safe-to-opt?
(when (and optimizing (not safe-to-opt?))
(log-missed-optimization
"Float-Complex division, potential exact 0s on the rhss"
(string-append
@ -454,9 +462,12 @@
"\nTo fix, change the highlighted expression(s) to have Float (or Float-Complex) type(s)."))
this-syntax irritants))
safe-to-opt?)
#:with exp:unboxed-float-complex-opt-expr this-syntax
#:with opt #`(let*-values (exp.bindings ...)
(unsafe-make-flrectangular exp.real-binding exp.imag-binding)))
#:attr opt
(delay
(syntax-parse this-syntax
(exp:unboxed-float-complex-opt-expr
#'(let*-values (exp.bindings ...)
(unsafe-make-flrectangular exp.real-binding exp.imag-binding))))))
(pattern v:id
#:do [(define unboxed-info (dict-ref unboxed-vars-table #'v #f))]
@ -464,11 +475,14 @@
#:when (subtypeof? #'v -FloatComplex)
#:with (real-binding imag-binding orig-binding) unboxed-info
;; we need to introduce both the binding and the use at the same time
#:do [(log-unboxing-opt "unboxed complex variable")
(add-disappeared-use (syntax-local-introduce #'v))
(add-disappeared-binding (syntax-local-introduce #'orig-binding))]
;; unboxed variable used in a boxed fashion, we have to box
#:with opt #'(unsafe-make-flrectangular real-binding imag-binding)))
#:attr opt
(delay
(log-unboxing-opt "unboxed complex variable")
(add-disappeared-use (syntax-local-introduce #'v))
(add-disappeared-binding (syntax-local-introduce #'orig-binding))
#'(unsafe-make-flrectangular real-binding imag-binding))))
;; takes as argument a structure describing which arguments will be unboxed
;; and the optimized version of the operator. operators are optimized elsewhere
@ -494,3 +508,6 @@
e.imag-binding ...
#,@(map (lambda (i) ((optimize) (get-arg i)))
boxed)))])))) ; boxed params
(define-syntax-class/specialize float-complex-arith-opt-expr (float-complex-arith-expr* #t))
(define-syntax-class/specialize float-complex-arith-expr (float-complex-arith-expr* #f))

View File

@ -173,8 +173,7 @@
(define (rec exp)
(syntax-parse exp
;; can be used in a complex arithmetic expr, can be a direct child
[exp:float-complex-arith-opt-expr
#:when (not (identifier? #'exp))
[(~and (~not :id) exp:float-complex-arith-expr)
(or (direct-child-of? v #'exp)
(ormap rec (syntax->list #'exp)))]
;; if the variable gets rebound to something else, we look for unboxing

View File

@ -1,28 +1,19 @@
#;#;
#<<END
TR info: invalid-unboxed-let.rkt 36:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 37:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 38:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 39:3 display -- hidden parameter
TR opt: invalid-unboxed-let.rkt 32:0 (let ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (+ 3.0+6.0i 4.0+8.0i)) (t3 1.0+2.0i) (t4 1)) (display (+ t1 t1)) (display t2) (display t3) (display t4)) -- unboxed let bindings
TR opt: invalid-unboxed-let.rkt 32:10 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 32:13 1.0+2.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 32:22 2.0+4.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 33:10 (+ 3.0+6.0i 4.0+8.0i) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 33:13 3.0+6.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 33:22 4.0+8.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 36:11 (+ t1 t1) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 36:11 (+ t1 t1) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 36:11 (+ t1 t1) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 36:11 (+ t1 t1) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 36:14 t1 -- leave var unboxed
TR opt: invalid-unboxed-let.rkt 36:14 t1 -- unbox float-complex
TR opt: invalid-unboxed-let.rkt 36:14 t1 -- unbox float-complex
TR opt: invalid-unboxed-let.rkt 36:14 t1 -- unbox float-complex
TR opt: invalid-unboxed-let.rkt 36:17 t1 -- leave var unboxed
TR opt: invalid-unboxed-let.rkt 36:17 t1 -- unbox float-complex
TR opt: invalid-unboxed-let.rkt 36:17 t1 -- unbox float-complex
TR opt: invalid-unboxed-let.rkt 36:17 t1 -- unbox float-complex
TR info: invalid-unboxed-let.rkt 27:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 28:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 29:3 display -- hidden parameter
TR info: invalid-unboxed-let.rkt 30:3 display -- hidden parameter
TR opt: invalid-unboxed-let.rkt 23:0 (let ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (+ 3.0+6.0i 4.0+8.0i)) (t3 1.0+2.0i) (t4 1)) (display (+ t1 t1)) (display t2) (display t3) (display t4)) -- unboxed let bindings
TR opt: invalid-unboxed-let.rkt 23:10 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 23:13 1.0+2.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 23:22 2.0+4.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 24:10 (+ 3.0+6.0i 4.0+8.0i) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 24:13 3.0+6.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 24:22 4.0+8.0i -- unboxed literal
TR opt: invalid-unboxed-let.rkt 27:11 (+ t1 t1) -- unboxed binary float complex
TR opt: invalid-unboxed-let.rkt 27:14 t1 -- leave var unboxed
TR opt: invalid-unboxed-let.rkt 27:17 t1 -- leave var unboxed
END
"6.0+12.0i7.0+14.0i1.0+2.0i1"

View File

@ -1,17 +1,15 @@
#;#;
#<<END
TR opt: make-polar.rkt 30:6 (make-polar 1.0 1.0) -- make-polar
TR opt: make-polar.rkt 30:6 (make-polar 1.0 1.0) -- make-rectangular elimination
TR opt: make-polar.rkt 33:0 (let ((p (+ 1.0+2.0i (make-polar 2.0 4.0)))) (string-append (real->decimal-string (real-part p) 3) (real->decimal-string (imag-part p) 3))) -- unboxed let bindings
TR opt: make-polar.rkt 33:12 1.0+2.0i -- unboxed literal
TR opt: make-polar.rkt 33:21 (make-polar 2.0 4.0) -- make-rectangular elimination
TR opt: make-polar.rkt 33:9 (+ 1.0+2.0i (make-polar 2.0 4.0)) -- unboxed binary float complex
TR opt: make-polar.rkt 34:39 (real-part p) -- complex accessor elimination
TR opt: make-polar.rkt 34:39 (real-part p) -- unboxed unary float complex
TR opt: make-polar.rkt 34:50 p -- leave var unboxed
TR opt: make-polar.rkt 34:50 p -- unbox float-complex
TR opt: make-polar.rkt 35:39 (imag-part p) -- complex accessor elimination
TR opt: make-polar.rkt 35:50 p -- leave var unboxed
TR opt: make-polar.rkt 28:6 (make-polar 1.0 1.0) -- make-polar
TR opt: make-polar.rkt 28:6 (make-polar 1.0 1.0) -- make-rectangular elimination
TR opt: make-polar.rkt 31:0 (let ((p (+ 1.0+2.0i (make-polar 2.0 4.0)))) (string-append (real->decimal-string (real-part p) 3) (real->decimal-string (imag-part p) 3))) -- unboxed let bindings
TR opt: make-polar.rkt 31:12 1.0+2.0i -- unboxed literal
TR opt: make-polar.rkt 31:21 (make-polar 2.0 4.0) -- make-rectangular elimination
TR opt: make-polar.rkt 31:9 (+ 1.0+2.0i (make-polar 2.0 4.0)) -- unboxed binary float complex
TR opt: make-polar.rkt 32:39 (real-part p) -- complex accessor elimination
TR opt: make-polar.rkt 32:50 p -- leave var unboxed
TR opt: make-polar.rkt 33:39 (imag-part p) -- complex accessor elimination
TR opt: make-polar.rkt 33:50 p -- leave var unboxed
END
#<<END
"-0.3070.486"

View File

@ -1,37 +1,31 @@
#;#;
#<<END
TR opt: nested-let-loop.rkt 44:0 (let: loop1 : Float-Complex ((x : (Listof Float-Complex) (quote (1.0+2.0i 2.0+4.0i))) (r : Float-Complex 0.0+0.0i)) (if (null? x) r (let: loop2 : Float-Complex ((y : (Listof Float-Complex) (quote (3.0+6.0i 4.0+8.0i))) (s : Float-Complex 0.0+0.0i)) (if (null? y) (loop1 (cdr x) (+ r s)) (loop2 (cdr y) (+ s (car x) (car y))))))) -- unboxed call site
TR opt: nested-let-loop.rkt 44:6 loop1 -- fun -> unboxed fun
TR opt: nested-let-loop.rkt 44:6 loop1 -- unboxed let loop
TR opt: nested-let-loop.rkt 46:28 0.0+0.0i -- unboxed literal
TR opt: nested-let-loop.rkt 46:8 r -- unboxed var -> table
TR opt: nested-let-loop.rkt 48:10 r -- unboxed complex variable
TR opt: nested-let-loop.rkt 49:10 (let: loop2 : Float-Complex ((y : (Listof Float-Complex) (quote (3.0+6.0i 4.0+8.0i))) (s : Float-Complex 0.0+0.0i)) (if (null? y) (loop1 (cdr x) (+ r s)) (loop2 (cdr y) (+ s (car x) (car y))))) -- unboxed call site
TR opt: nested-let-loop.rkt 49:16 loop2 -- fun -> unboxed fun
TR opt: nested-let-loop.rkt 49:16 loop2 -- unboxed let loop
TR opt: nested-let-loop.rkt 51:18 s -- unboxed var -> table
TR opt: nested-let-loop.rkt 51:38 0.0+0.0i -- unboxed literal
TR opt: nested-let-loop.rkt 53:20 (loop1 (cdr x) (+ r s)) -- call to fun with unboxed args
TR opt: nested-let-loop.rkt 53:20 (loop1 (cdr x) (+ r s)) -- unboxed call site
TR opt: nested-let-loop.rkt 53:27 (cdr x) -- pair
TR opt: nested-let-loop.rkt 53:35 (+ r s) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 53:35 (+ r s) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 53:35 (+ r s) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 53:38 r -- leave var unboxed
TR opt: nested-let-loop.rkt 53:38 r -- leave var unboxed
TR opt: nested-let-loop.rkt 53:38 r -- unbox float-complex
TR opt: nested-let-loop.rkt 53:40 s -- leave var unboxed
TR opt: nested-let-loop.rkt 53:40 s -- unbox float-complex
TR opt: nested-let-loop.rkt 53:40 s -- unbox float-complex
TR opt: nested-let-loop.rkt 54:20 (loop2 (cdr y) (+ s (car x) (car y))) -- call to fun with unboxed args
TR opt: nested-let-loop.rkt 54:20 (loop2 (cdr y) (+ s (car x) (car y))) -- unboxed call site
TR opt: nested-let-loop.rkt 54:27 (cdr y) -- pair
TR opt: nested-let-loop.rkt 54:35 (+ s (car x) (car y)) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 54:38 s -- leave var unboxed
TR opt: nested-let-loop.rkt 54:40 (car x) -- pair
TR opt: nested-let-loop.rkt 54:40 (car x) -- unbox float-complex
TR opt: nested-let-loop.rkt 54:48 (car y) -- pair
TR opt: nested-let-loop.rkt 54:48 (car y) -- unbox float-complex
TR opt: nested-let-loop.rkt 38:0 (let: loop1 : Float-Complex ((x : (Listof Float-Complex) (quote (1.0+2.0i 2.0+4.0i))) (r : Float-Complex 0.0+0.0i)) (if (null? x) r (let: loop2 : Float-Complex ((y : (Listof Float-Complex) (quote (3.0+6.0i 4.0+8.0i))) (s : Float-Complex 0.0+0.0i)) (if (null? y) (loop1 (cdr x) (+ r s)) (loop2 (cdr y) (+ s (car x) (car y))))))) -- unboxed call site
TR opt: nested-let-loop.rkt 38:6 loop1 -- fun -> unboxed fun
TR opt: nested-let-loop.rkt 38:6 loop1 -- unboxed let loop
TR opt: nested-let-loop.rkt 40:28 0.0+0.0i -- unboxed literal
TR opt: nested-let-loop.rkt 40:8 r -- unboxed var -> table
TR opt: nested-let-loop.rkt 42:10 r -- unboxed complex variable
TR opt: nested-let-loop.rkt 43:10 (let: loop2 : Float-Complex ((y : (Listof Float-Complex) (quote (3.0+6.0i 4.0+8.0i))) (s : Float-Complex 0.0+0.0i)) (if (null? y) (loop1 (cdr x) (+ r s)) (loop2 (cdr y) (+ s (car x) (car y))))) -- unboxed call site
TR opt: nested-let-loop.rkt 43:16 loop2 -- fun -> unboxed fun
TR opt: nested-let-loop.rkt 43:16 loop2 -- unboxed let loop
TR opt: nested-let-loop.rkt 45:18 s -- unboxed var -> table
TR opt: nested-let-loop.rkt 45:38 0.0+0.0i -- unboxed literal
TR opt: nested-let-loop.rkt 47:20 (loop1 (cdr x) (+ r s)) -- call to fun with unboxed args
TR opt: nested-let-loop.rkt 47:20 (loop1 (cdr x) (+ r s)) -- unboxed call site
TR opt: nested-let-loop.rkt 47:27 (cdr x) -- pair
TR opt: nested-let-loop.rkt 47:35 (+ r s) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 47:38 r -- leave var unboxed
TR opt: nested-let-loop.rkt 47:40 s -- leave var unboxed
TR opt: nested-let-loop.rkt 48:20 (loop2 (cdr y) (+ s (car x) (car y))) -- call to fun with unboxed args
TR opt: nested-let-loop.rkt 48:20 (loop2 (cdr y) (+ s (car x) (car y))) -- unboxed call site
TR opt: nested-let-loop.rkt 48:27 (cdr y) -- pair
TR opt: nested-let-loop.rkt 48:35 (+ s (car x) (car y)) -- unboxed binary float complex
TR opt: nested-let-loop.rkt 48:38 s -- leave var unboxed
TR opt: nested-let-loop.rkt 48:40 (car x) -- pair
TR opt: nested-let-loop.rkt 48:40 (car x) -- unbox float-complex
TR opt: nested-let-loop.rkt 48:48 (car y) -- pair
TR opt: nested-let-loop.rkt 48:48 (car y) -- unbox float-complex
END
#<<END
20.0+40.0i

View File

@ -1,22 +1,16 @@
#;#;
#<<END
TR opt: nested-unboxed-let.rkt 29:0 (let ((x (+ 1.0+2.0i 2.0+3.0i))) (let ((x (+ x 2.0+3.0i))) (+ x 3.0+6.0i))) -- unboxed let bindings
TR opt: nested-unboxed-let.rkt 29:12 1.0+2.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 29:21 2.0+3.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 29:9 (+ 1.0+2.0i 2.0+3.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 30:11 (+ x 2.0+3.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 30:11 (+ x 2.0+3.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 30:14 x -- leave var unboxed
TR opt: nested-unboxed-let.rkt 30:14 x -- unbox float-complex
TR opt: nested-unboxed-let.rkt 30:16 2.0+3.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 30:16 2.0+3.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 30:2 (let ((x (+ x 2.0+3.0i))) (+ x 3.0+6.0i)) -- unboxed let bindings
TR opt: nested-unboxed-let.rkt 31:4 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 31:4 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 31:7 x -- leave var unboxed
TR opt: nested-unboxed-let.rkt 31:7 x -- unbox float-complex
TR opt: nested-unboxed-let.rkt 31:9 3.0+6.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 31:9 3.0+6.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 23:0 (let ((x (+ 1.0+2.0i 2.0+3.0i))) (let ((x (+ x 2.0+3.0i))) (+ x 3.0+6.0i))) -- unboxed let bindings
TR opt: nested-unboxed-let.rkt 23:12 1.0+2.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 23:21 2.0+3.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 23:9 (+ 1.0+2.0i 2.0+3.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 24:11 (+ x 2.0+3.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 24:14 x -- leave var unboxed
TR opt: nested-unboxed-let.rkt 24:16 2.0+3.0i -- unboxed literal
TR opt: nested-unboxed-let.rkt 24:2 (let ((x (+ x 2.0+3.0i))) (+ x 3.0+6.0i)) -- unboxed let bindings
TR opt: nested-unboxed-let.rkt 25:4 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: nested-unboxed-let.rkt 25:7 x -- leave var unboxed
TR opt: nested-unboxed-let.rkt 25:9 3.0+6.0i -- unboxed literal
END
#<<END
8.0+14.0i

View File

@ -1,20 +1,18 @@
#;#;
#<<END
TR opt: real-part-loop.rkt 31:1 (let loop ((v 0.0+1.0i)) (if (> (real-part v) 70000.2) 0 (loop (+ v 3.6)))) -- unboxed call site
TR opt: real-part-loop.rkt 31:13 v -- unboxed var -> table
TR opt: real-part-loop.rkt 31:15 0.0+1.0i -- unboxed literal
TR opt: real-part-loop.rkt 31:6 loop -- fun -> unboxed fun
TR opt: real-part-loop.rkt 31:6 loop -- unboxed let loop
TR opt: real-part-loop.rkt 32:20 v -- leave var unboxed
TR opt: real-part-loop.rkt 32:20 v -- unbox float-complex
TR opt: real-part-loop.rkt 32:6 (> (real-part v) 70000.2) -- binary float comp
TR opt: real-part-loop.rkt 32:9 (real-part v) -- complex accessor elimination
TR opt: real-part-loop.rkt 32:9 (real-part v) -- unboxed unary float complex
TR opt: real-part-loop.rkt 34:12 (+ v 3.6) -- unboxed binary float complex
TR opt: real-part-loop.rkt 34:15 v -- leave var unboxed
TR opt: real-part-loop.rkt 34:17 3.6 -- float-arg-expr in complex ops
TR opt: real-part-loop.rkt 34:6 (loop (+ v 3.6)) -- call to fun with unboxed args
TR opt: real-part-loop.rkt 34:6 (loop (+ v 3.6)) -- unboxed call site
TR opt: real-part-loop.rkt 29:1 (let loop ((v 0.0+1.0i)) (if (> (real-part v) 70000.2) 0 (loop (+ v 3.6)))) -- unboxed call site
TR opt: real-part-loop.rkt 29:13 v -- unboxed var -> table
TR opt: real-part-loop.rkt 29:15 0.0+1.0i -- unboxed literal
TR opt: real-part-loop.rkt 29:6 loop -- fun -> unboxed fun
TR opt: real-part-loop.rkt 29:6 loop -- unboxed let loop
TR opt: real-part-loop.rkt 30:20 v -- leave var unboxed
TR opt: real-part-loop.rkt 30:6 (> (real-part v) 70000.2) -- binary float comp
TR opt: real-part-loop.rkt 30:9 (real-part v) -- complex accessor elimination
TR opt: real-part-loop.rkt 32:12 (+ v 3.6) -- unboxed binary float complex
TR opt: real-part-loop.rkt 32:15 v -- leave var unboxed
TR opt: real-part-loop.rkt 32:17 3.6 -- float-arg-expr in complex ops
TR opt: real-part-loop.rkt 32:6 (loop (+ v 3.6)) -- call to fun with unboxed args
TR opt: real-part-loop.rkt 32:6 (loop (+ v 3.6)) -- unboxed call site
END
#<<END
0

View File

@ -1,39 +1,25 @@
#;#;
#<<END
TR opt: unboxed-for.rkt 43:0 #%module-begin -- in-list
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- call to fun with unboxed args
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- fun -> unboxed fun
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unbox float-complex
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed call site
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed call site
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let bindings
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let bindings
TR opt: unboxed-for.rkt 46:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let loop
TR opt: unboxed-for.rkt 46:31 sum -- leave var unboxed
TR opt: unboxed-for.rkt 46:31 sum -- unbox float-complex
TR opt: unboxed-for.rkt 46:31 sum -- unboxed complex variable
TR opt: unboxed-for.rkt 46:31 sum -- unboxed complex variable
TR opt: unboxed-for.rkt 46:31 sum -- unboxed complex variable
TR opt: unboxed-for.rkt 46:31 sum -- unboxed var -> table
TR opt: unboxed-for.rkt 46:53 0.0+0.0i -- unboxed literal
TR opt: unboxed-for.rkt 47:13 i -- unboxed complex variable
TR opt: unboxed-for.rkt 47:13 i -- unboxed complex variable
TR opt: unboxed-for.rkt 47:13 i -- unboxed complex variable
TR opt: unboxed-for.rkt 48:11 sum -- leave var unboxed
TR opt: unboxed-for.rkt 48:11 sum -- unbox float-complex
TR opt: unboxed-for.rkt 48:11 sum -- unbox float-complex
TR opt: unboxed-for.rkt 48:11 sum -- unbox float-complex
TR opt: unboxed-for.rkt 48:11 sum -- unbox float-complex
TR opt: unboxed-for.rkt 48:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 48:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 48:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 48:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 48:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 48:9 i -- leave var unboxed
TR opt: unboxed-for.rkt 48:9 i -- leave var unboxed
TR opt: unboxed-for.rkt 48:9 i -- unbox float-complex
TR opt: unboxed-for.rkt 48:9 i -- unbox float-complex
TR opt: unboxed-for.rkt 48:9 i -- unbox float-complex
TR opt: unboxed-for.rkt 29:0 #%module-begin -- in-list
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- call to fun with unboxed args
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- fun -> unboxed fun
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unbox float-complex
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed call site
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed call site
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let bindings
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let bindings
TR opt: unboxed-for.rkt 32:0 (for/fold: : Float-Complex ((sum : Float-Complex 0.0+0.0i)) ((i : Float-Complex (quote (1.0+2.0i 2.0+4.0i)))) (+ i sum)) -- unboxed let loop
TR opt: unboxed-for.rkt 32:31 sum -- leave var unboxed
TR opt: unboxed-for.rkt 32:31 sum -- unbox float-complex
TR opt: unboxed-for.rkt 32:31 sum -- unboxed complex variable
TR opt: unboxed-for.rkt 32:31 sum -- unboxed complex variable
TR opt: unboxed-for.rkt 32:31 sum -- unboxed var -> table
TR opt: unboxed-for.rkt 32:53 0.0+0.0i -- unboxed literal
TR opt: unboxed-for.rkt 33:13 i -- unboxed complex variable
TR opt: unboxed-for.rkt 33:13 i -- unboxed complex variable
TR opt: unboxed-for.rkt 34:11 sum -- leave var unboxed
TR opt: unboxed-for.rkt 34:6 (+ i sum) -- unboxed binary float complex
TR opt: unboxed-for.rkt 34:9 i -- leave var unboxed
END
#<<END
3.0+6.0i

View File

@ -1,18 +1,15 @@
#;#;
#<<END
TR opt: unboxed-let-functions1.rkt 26:20 x -- unboxed var -> table
TR opt: unboxed-let-functions1.rkt 26:42 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions1.rkt 26:42 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions1.rkt 26:45 x -- leave var unboxed
TR opt: unboxed-let-functions1.rkt 26:45 x -- unbox float-complex
TR opt: unboxed-let-functions1.rkt 26:47 3.0+6.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 26:47 3.0+6.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 26:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions1.rkt 27:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 27:2 (f (+ 1.0+2.0i 2.0+4.0i)) -- call to fun with unboxed args
TR opt: unboxed-let-functions1.rkt 27:2 (f (+ 1.0+2.0i 2.0+4.0i)) -- unboxed call site
TR opt: unboxed-let-functions1.rkt 27:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions1.rkt 27:8 1.0+2.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 23:20 x -- unboxed var -> table
TR opt: unboxed-let-functions1.rkt 23:42 (+ x 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions1.rkt 23:45 x -- leave var unboxed
TR opt: unboxed-let-functions1.rkt 23:47 3.0+6.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 23:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions1.rkt 24:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions1.rkt 24:2 (f (+ 1.0+2.0i 2.0+4.0i)) -- call to fun with unboxed args
TR opt: unboxed-let-functions1.rkt 24:2 (f (+ 1.0+2.0i 2.0+4.0i)) -- unboxed call site
TR opt: unboxed-let-functions1.rkt 24:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions1.rkt 24:8 1.0+2.0i -- unboxed literal
END
#<<END
6.0+12.0i

View File

@ -1,23 +1,17 @@
#;#;
#<<END
TR opt: unboxed-let-functions2.rkt 31:20 x -- unboxed var -> table
TR opt: unboxed-let-functions2.rkt 31:42 y -- unboxed var -> table
TR opt: unboxed-let-functions2.rkt 31:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions2.rkt 32:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 32:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 32:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 32:21 x -- leave var unboxed
TR opt: unboxed-let-functions2.rkt 32:21 x -- unbox float-complex
TR opt: unboxed-let-functions2.rkt 32:21 x -- unbox float-complex
TR opt: unboxed-let-functions2.rkt 32:23 y -- leave var unboxed
TR opt: unboxed-let-functions2.rkt 32:23 y -- unbox float-complex
TR opt: unboxed-let-functions2.rkt 32:23 y -- unbox float-complex
TR opt: unboxed-let-functions2.rkt 33:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions2.rkt 33:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0+6.0i) -- call to fun with unboxed args
TR opt: unboxed-let-functions2.rkt 33:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0+6.0i) -- unboxed call site
TR opt: unboxed-let-functions2.rkt 33:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 33:8 1.0+2.0i -- unboxed literal
TR opt: unboxed-let-functions2.rkt 34:5 3.0+6.0i -- unboxed literal
TR opt: unboxed-let-functions2.rkt 25:20 x -- unboxed var -> table
TR opt: unboxed-let-functions2.rkt 25:42 y -- unboxed var -> table
TR opt: unboxed-let-functions2.rkt 25:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions2.rkt 26:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 26:21 x -- leave var unboxed
TR opt: unboxed-let-functions2.rkt 26:23 y -- leave var unboxed
TR opt: unboxed-let-functions2.rkt 27:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions2.rkt 27:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0+6.0i) -- call to fun with unboxed args
TR opt: unboxed-let-functions2.rkt 27:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0+6.0i) -- unboxed call site
TR opt: unboxed-let-functions2.rkt 27:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions2.rkt 27:8 1.0+2.0i -- unboxed literal
TR opt: unboxed-let-functions2.rkt 28:5 3.0+6.0i -- unboxed literal
END
#<<END
6.0+12.0i

View File

@ -1,18 +1,15 @@
#;#;
#<<END
TR opt: unboxed-let-functions3.rkt 26:20 x -- unboxed var -> table
TR opt: unboxed-let-functions3.rkt 26:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions3.rkt 27:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions3.rkt 27:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions3.rkt 27:21 x -- leave var unboxed
TR opt: unboxed-let-functions3.rkt 27:21 x -- unbox float-complex
TR opt: unboxed-let-functions3.rkt 27:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions3.rkt 27:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions3.rkt 28:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions3.rkt 28:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0) -- call to fun with unboxed args
TR opt: unboxed-let-functions3.rkt 28:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0) -- unboxed call site
TR opt: unboxed-let-functions3.rkt 28:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions3.rkt 28:8 1.0+2.0i -- unboxed literal
TR opt: unboxed-let-functions3.rkt 23:20 x -- unboxed var -> table
TR opt: unboxed-let-functions3.rkt 23:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions3.rkt 24:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions3.rkt 24:21 x -- leave var unboxed
TR opt: unboxed-let-functions3.rkt 24:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions3.rkt 25:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions3.rkt 25:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0) -- call to fun with unboxed args
TR opt: unboxed-let-functions3.rkt 25:2 (f (+ 1.0+2.0i 2.0+4.0i) 3.0) -- unboxed call site
TR opt: unboxed-let-functions3.rkt 25:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions3.rkt 25:8 1.0+2.0i -- unboxed literal
END
#<<END
6.0+6.0i

View File

@ -1,18 +1,15 @@
#;#;
#<<END
TR opt: unboxed-let-functions4.rkt 26:32 x -- unboxed var -> table
TR opt: unboxed-let-functions4.rkt 26:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions4.rkt 27:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions4.rkt 27:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions4.rkt 27:21 x -- leave var unboxed
TR opt: unboxed-let-functions4.rkt 27:21 x -- unbox float-complex
TR opt: unboxed-let-functions4.rkt 27:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions4.rkt 27:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions4.rkt 28:2 (f 3.0 (+ 1.0+2.0i 2.0+4.0i)) -- call to fun with unboxed args
TR opt: unboxed-let-functions4.rkt 28:2 (f 3.0 (+ 1.0+2.0i 2.0+4.0i)) -- unboxed call site
TR opt: unboxed-let-functions4.rkt 29:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions4.rkt 29:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions4.rkt 29:8 1.0+2.0i -- unboxed literal
TR opt: unboxed-let-functions4.rkt 23:32 x -- unboxed var -> table
TR opt: unboxed-let-functions4.rkt 23:7 f -- fun -> unboxed fun
TR opt: unboxed-let-functions4.rkt 24:18 (+ x y) -- unboxed binary float complex
TR opt: unboxed-let-functions4.rkt 24:21 x -- leave var unboxed
TR opt: unboxed-let-functions4.rkt 24:23 y -- float-arg-expr in complex ops
TR opt: unboxed-let-functions4.rkt 25:2 (f 3.0 (+ 1.0+2.0i 2.0+4.0i)) -- call to fun with unboxed args
TR opt: unboxed-let-functions4.rkt 25:2 (f 3.0 (+ 1.0+2.0i 2.0+4.0i)) -- unboxed call site
TR opt: unboxed-let-functions4.rkt 26:17 2.0+4.0i -- unboxed literal
TR opt: unboxed-let-functions4.rkt 26:5 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions4.rkt 26:8 1.0+2.0i -- unboxed literal
END
#<<END
6.0+6.0i

View File

@ -1,23 +1,20 @@
#;#;
#<<END
TR opt: unboxed-let-functions6.rkt 30:0 (let: loop : Float-Complex ((z : Float-Complex 0.0+0.0i) (l : (Listof Integer) (quote (1 2 3)))) (if (null? l) (+ z 0.0+1.0i) (loop (+ z (car l)) (cdr l)))) -- unboxed call site
TR opt: unboxed-let-functions6.rkt 30:31 z -- unboxed var -> table
TR opt: unboxed-let-functions6.rkt 30:51 0.0+0.0i -- unboxed literal
TR opt: unboxed-let-functions6.rkt 30:6 loop -- fun -> unboxed fun
TR opt: unboxed-let-functions6.rkt 30:6 loop -- unboxed let loop
TR opt: unboxed-let-functions6.rkt 33:10 (+ z 0.0+1.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions6.rkt 33:10 (+ z 0.0+1.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions6.rkt 33:13 z -- leave var unboxed
TR opt: unboxed-let-functions6.rkt 33:13 z -- unbox float-complex
TR opt: unboxed-let-functions6.rkt 33:15 0.0+1.0i -- unboxed literal
TR opt: unboxed-let-functions6.rkt 33:15 0.0+1.0i -- unboxed literal
TR opt: unboxed-let-functions6.rkt 34:10 (loop (+ z (car l)) (cdr l)) -- call to fun with unboxed args
TR opt: unboxed-let-functions6.rkt 34:10 (loop (+ z (car l)) (cdr l)) -- unboxed call site
TR opt: unboxed-let-functions6.rkt 34:16 (+ z (car l)) -- unboxed binary float complex
TR opt: unboxed-let-functions6.rkt 34:19 z -- leave var unboxed
TR opt: unboxed-let-functions6.rkt 34:21 (car l) -- float-arg-expr in complex ops
TR opt: unboxed-let-functions6.rkt 34:21 (car l) -- pair
TR opt: unboxed-let-functions6.rkt 35:16 (cdr l) -- pair
TR opt: unboxed-let-functions6.rkt 27:0 (let: loop : Float-Complex ((z : Float-Complex 0.0+0.0i) (l : (Listof Integer) (quote (1 2 3)))) (if (null? l) (+ z 0.0+1.0i) (loop (+ z (car l)) (cdr l)))) -- unboxed call site
TR opt: unboxed-let-functions6.rkt 27:31 z -- unboxed var -> table
TR opt: unboxed-let-functions6.rkt 27:51 0.0+0.0i -- unboxed literal
TR opt: unboxed-let-functions6.rkt 27:6 loop -- fun -> unboxed fun
TR opt: unboxed-let-functions6.rkt 27:6 loop -- unboxed let loop
TR opt: unboxed-let-functions6.rkt 30:10 (+ z 0.0+1.0i) -- unboxed binary float complex
TR opt: unboxed-let-functions6.rkt 30:13 z -- leave var unboxed
TR opt: unboxed-let-functions6.rkt 30:15 0.0+1.0i -- unboxed literal
TR opt: unboxed-let-functions6.rkt 31:10 (loop (+ z (car l)) (cdr l)) -- call to fun with unboxed args
TR opt: unboxed-let-functions6.rkt 31:10 (loop (+ z (car l)) (cdr l)) -- unboxed call site
TR opt: unboxed-let-functions6.rkt 31:16 (+ z (car l)) -- unboxed binary float complex
TR opt: unboxed-let-functions6.rkt 31:19 z -- leave var unboxed
TR opt: unboxed-let-functions6.rkt 31:21 (car l) -- float-arg-expr in complex ops
TR opt: unboxed-let-functions6.rkt 31:21 (car l) -- pair
TR opt: unboxed-let-functions6.rkt 32:16 (cdr l) -- pair
END
#<<END
6.0+1.0i

View File

@ -1,22 +1,18 @@
#;#;
#<<END
TR opt: unboxed-let-functions7.rkt 30:0 (let: loop : Float-Complex ((z : Float-Complex 0.0+0.0i) (l : (Listof Integer) (quote (1 2 3)))) (if (null? l) z (loop (+ z (car l)) (cdr l)))) -- unboxed call site
TR opt: unboxed-let-functions7.rkt 30:31 z -- unboxed var -> table
TR opt: unboxed-let-functions7.rkt 30:51 0.0+0.0i -- unboxed literal
TR opt: unboxed-let-functions7.rkt 30:6 loop -- fun -> unboxed fun
TR opt: unboxed-let-functions7.rkt 30:6 loop -- unboxed let loop
TR opt: unboxed-let-functions7.rkt 33:6 z -- unboxed complex variable
TR opt: unboxed-let-functions7.rkt 34:12 (+ z (car l)) -- unboxed binary float complex
TR opt: unboxed-let-functions7.rkt 34:12 (+ z (car l)) -- unboxed binary float complex
TR opt: unboxed-let-functions7.rkt 34:15 z -- leave var unboxed
TR opt: unboxed-let-functions7.rkt 34:15 z -- unbox float-complex
TR opt: unboxed-let-functions7.rkt 34:17 (car l) -- float-arg-expr in complex ops
TR opt: unboxed-let-functions7.rkt 34:17 (car l) -- float-arg-expr in complex ops
TR opt: unboxed-let-functions7.rkt 34:17 (car l) -- pair
TR opt: unboxed-let-functions7.rkt 34:17 (car l) -- pair
TR opt: unboxed-let-functions7.rkt 34:6 (loop (+ z (car l)) (cdr l)) -- call to fun with unboxed args
TR opt: unboxed-let-functions7.rkt 34:6 (loop (+ z (car l)) (cdr l)) -- unboxed call site
TR opt: unboxed-let-functions7.rkt 35:12 (cdr l) -- pair
TR opt: unboxed-let-functions7.rkt 26:0 (let: loop : Float-Complex ((z : Float-Complex 0.0+0.0i) (l : (Listof Integer) (quote (1 2 3)))) (if (null? l) z (loop (+ z (car l)) (cdr l)))) -- unboxed call site
TR opt: unboxed-let-functions7.rkt 26:31 z -- unboxed var -> table
TR opt: unboxed-let-functions7.rkt 26:51 0.0+0.0i -- unboxed literal
TR opt: unboxed-let-functions7.rkt 26:6 loop -- fun -> unboxed fun
TR opt: unboxed-let-functions7.rkt 26:6 loop -- unboxed let loop
TR opt: unboxed-let-functions7.rkt 29:6 z -- unboxed complex variable
TR opt: unboxed-let-functions7.rkt 30:12 (+ z (car l)) -- unboxed binary float complex
TR opt: unboxed-let-functions7.rkt 30:15 z -- leave var unboxed
TR opt: unboxed-let-functions7.rkt 30:17 (car l) -- float-arg-expr in complex ops
TR opt: unboxed-let-functions7.rkt 30:17 (car l) -- pair
TR opt: unboxed-let-functions7.rkt 30:6 (loop (+ z (car l)) (cdr l)) -- call to fun with unboxed args
TR opt: unboxed-let-functions7.rkt 30:6 (loop (+ z (car l)) (cdr l)) -- unboxed call site
TR opt: unboxed-let-functions7.rkt 31:12 (cdr l) -- pair
END
#<<END
6.0+0.0i

View File

@ -1,27 +1,18 @@
#;#;
#<<END
TR opt: unboxed-let.rkt 36:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 36:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 36:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 36:11 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let.rkt 36:14 1.0+2.0i -- unboxed literal
TR opt: unboxed-let.rkt 36:23 2.0+4.0i -- unboxed literal
TR opt: unboxed-let.rkt 37:11 (- t1 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let.rkt 37:11 (- t1 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let.rkt 37:14 t1 -- leave var unboxed
TR opt: unboxed-let.rkt 37:14 t1 -- unbox float-complex
TR opt: unboxed-let.rkt 37:17 3.0+6.0i -- unboxed literal
TR opt: unboxed-let.rkt 37:17 3.0+6.0i -- unboxed literal
TR opt: unboxed-let.rkt 38:11 4.0+8.0i -- unboxed literal
TR opt: unboxed-let.rkt 39:2 (+ t2 t3) -- unboxed binary float complex
TR opt: unboxed-let.rkt 39:2 (+ t2 t3) -- unboxed binary float complex
TR opt: unboxed-let.rkt 39:2 (+ t2 t3) -- unboxed binary float complex
TR opt: unboxed-let.rkt 39:5 t2 -- leave var unboxed
TR opt: unboxed-let.rkt 39:5 t2 -- leave var unboxed
TR opt: unboxed-let.rkt 39:5 t2 -- unbox float-complex
TR opt: unboxed-let.rkt 39:8 t3 -- leave var unboxed
TR opt: unboxed-let.rkt 39:8 t3 -- unbox float-complex
TR opt: unboxed-let.rkt 39:8 t3 -- unbox float-complex
TR opt: unboxed-let.rkt 27:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 27:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 27:0 (let* ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (- t1 3.0+6.0i)) (t3 4.0+8.0i)) (+ t2 t3)) -- unboxed let bindings
TR opt: unboxed-let.rkt 27:11 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let.rkt 27:14 1.0+2.0i -- unboxed literal
TR opt: unboxed-let.rkt 27:23 2.0+4.0i -- unboxed literal
TR opt: unboxed-let.rkt 28:11 (- t1 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-let.rkt 28:14 t1 -- leave var unboxed
TR opt: unboxed-let.rkt 28:17 3.0+6.0i -- unboxed literal
TR opt: unboxed-let.rkt 29:11 4.0+8.0i -- unboxed literal
TR opt: unboxed-let.rkt 30:2 (+ t2 t3) -- unboxed binary float complex
TR opt: unboxed-let.rkt 30:5 t2 -- leave var unboxed
TR opt: unboxed-let.rkt 30:8 t3 -- leave var unboxed
END
#<<END
4.0+8.0i

View File

@ -1,21 +1,15 @@
#;#;
#<<END
TR opt: unboxed-let2.rkt 28:0 (let ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (+ 3.0+6.0i 4.0+8.0i))) (+ t1 t2)) -- unboxed let bindings
TR opt: unboxed-let2.rkt 28:10 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 28:13 1.0+2.0i -- unboxed literal
TR opt: unboxed-let2.rkt 28:22 2.0+4.0i -- unboxed literal
TR opt: unboxed-let2.rkt 29:10 (+ 3.0+6.0i 4.0+8.0i) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 29:13 3.0+6.0i -- unboxed literal
TR opt: unboxed-let2.rkt 29:22 4.0+8.0i -- unboxed literal
TR opt: unboxed-let2.rkt 30:2 (+ t1 t2) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 30:2 (+ t1 t2) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 30:2 (+ t1 t2) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 30:5 t1 -- leave var unboxed
TR opt: unboxed-let2.rkt 30:5 t1 -- unbox float-complex
TR opt: unboxed-let2.rkt 30:5 t1 -- unbox float-complex
TR opt: unboxed-let2.rkt 30:8 t2 -- leave var unboxed
TR opt: unboxed-let2.rkt 30:8 t2 -- unbox float-complex
TR opt: unboxed-let2.rkt 30:8 t2 -- unbox float-complex
TR opt: unboxed-let2.rkt 22:0 (let ((t1 (+ 1.0+2.0i 2.0+4.0i)) (t2 (+ 3.0+6.0i 4.0+8.0i))) (+ t1 t2)) -- unboxed let bindings
TR opt: unboxed-let2.rkt 22:10 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 22:13 1.0+2.0i -- unboxed literal
TR opt: unboxed-let2.rkt 22:22 2.0+4.0i -- unboxed literal
TR opt: unboxed-let2.rkt 23:10 (+ 3.0+6.0i 4.0+8.0i) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 23:13 3.0+6.0i -- unboxed literal
TR opt: unboxed-let2.rkt 23:22 4.0+8.0i -- unboxed literal
TR opt: unboxed-let2.rkt 24:2 (+ t1 t2) -- unboxed binary float complex
TR opt: unboxed-let2.rkt 24:5 t1 -- leave var unboxed
TR opt: unboxed-let2.rkt 24:8 t2 -- leave var unboxed
END
#<<END
10.0+20.0i

View File

@ -1,16 +1,13 @@
#;#;
#<<END
TR opt: unboxed-let3.rkt 30:0 (let ((x (+ 1.0+2.0i 2.0+4.0i))) (if (even? 2) x (+ x 2.0+4.0i))) -- unboxed let bindings
TR opt: unboxed-let3.rkt 30:12 1.0+2.0i -- unboxed literal
TR opt: unboxed-let3.rkt 30:21 2.0+4.0i -- unboxed literal
TR opt: unboxed-let3.rkt 30:9 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let3.rkt 32:6 x -- unboxed complex variable
TR opt: unboxed-let3.rkt 33:11 2.0+4.0i -- unboxed literal
TR opt: unboxed-let3.rkt 33:11 2.0+4.0i -- unboxed literal
TR opt: unboxed-let3.rkt 33:6 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let3.rkt 33:6 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let3.rkt 33:9 x -- leave var unboxed
TR opt: unboxed-let3.rkt 33:9 x -- unbox float-complex
TR opt: unboxed-let3.rkt 27:0 (let ((x (+ 1.0+2.0i 2.0+4.0i))) (if (even? 2) x (+ x 2.0+4.0i))) -- unboxed let bindings
TR opt: unboxed-let3.rkt 27:12 1.0+2.0i -- unboxed literal
TR opt: unboxed-let3.rkt 27:21 2.0+4.0i -- unboxed literal
TR opt: unboxed-let3.rkt 27:9 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let3.rkt 29:6 x -- unboxed complex variable
TR opt: unboxed-let3.rkt 30:11 2.0+4.0i -- unboxed literal
TR opt: unboxed-let3.rkt 30:6 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-let3.rkt 30:9 x -- leave var unboxed
END
#<<END
3.0+6.0i

View File

@ -1,15 +1,12 @@
#;#;
#<<END
TR opt: unboxed-letrec-syntaxes+values.rkt 22:0 (letrec-syntaxes+values (((s) (syntax-rules () ((_ x) x)))) (((x) (+ 1.0+2.0i 2.0+4.0i))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-letrec-syntaxes+values.rkt 23:30 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-letrec-syntaxes+values.rkt 23:33 1.0+2.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 23:42 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 24:24 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-letrec-syntaxes+values.rkt 24:24 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-letrec-syntaxes+values.rkt 24:27 x -- leave var unboxed
TR opt: unboxed-letrec-syntaxes+values.rkt 24:27 x -- unbox float-complex
TR opt: unboxed-letrec-syntaxes+values.rkt 24:29 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 24:29 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 19:0 (letrec-syntaxes+values (((s) (syntax-rules () ((_ x) x)))) (((x) (+ 1.0+2.0i 2.0+4.0i))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-letrec-syntaxes+values.rkt 20:30 (+ 1.0+2.0i 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-letrec-syntaxes+values.rkt 20:33 1.0+2.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 20:42 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec-syntaxes+values.rkt 21:24 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-letrec-syntaxes+values.rkt 21:27 x -- leave var unboxed
TR opt: unboxed-letrec-syntaxes+values.rkt 21:29 2.0+4.0i -- unboxed literal
END
#<<END
5.0+10.0i

View File

@ -1,19 +1,13 @@
#;#;
#<<END
TR opt: unboxed-letrec.rkt 28:0 (letrec: ((f : (Any -> Any) (lambda: ((x : Any)) (f x))) (x : Float-Complex 1.0+2.0i) (y : Float-Complex (+ 2.0+4.0i 3.0+6.0i))) (+ x y)) -- unboxed let bindings
TR opt: unboxed-letrec.rkt 29:31 1.0+2.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 30:31 (+ 2.0+4.0i 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 30:34 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 30:43 3.0+6.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 31:2 (+ x y) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 31:2 (+ x y) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 31:2 (+ x y) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 31:5 x -- leave var unboxed
TR opt: unboxed-letrec.rkt 31:5 x -- unbox float-complex
TR opt: unboxed-letrec.rkt 31:5 x -- unbox float-complex
TR opt: unboxed-letrec.rkt 31:7 y -- leave var unboxed
TR opt: unboxed-letrec.rkt 31:7 y -- unbox float-complex
TR opt: unboxed-letrec.rkt 31:7 y -- unbox float-complex
TR opt: unboxed-letrec.rkt 22:0 (letrec: ((f : (Any -> Any) (lambda: ((x : Any)) (f x))) (x : Float-Complex 1.0+2.0i) (y : Float-Complex (+ 2.0+4.0i 3.0+6.0i))) (+ x y)) -- unboxed let bindings
TR opt: unboxed-letrec.rkt 23:31 1.0+2.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 24:31 (+ 2.0+4.0i 3.0+6.0i) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 24:34 2.0+4.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 24:43 3.0+6.0i -- unboxed literal
TR opt: unboxed-letrec.rkt 25:2 (+ x y) -- unboxed binary float complex
TR opt: unboxed-letrec.rkt 25:5 x -- leave var unboxed
TR opt: unboxed-letrec.rkt 25:7 y -- leave var unboxed
END
#<<END
6.0+12.0i

View File

@ -1,21 +1,15 @@
#;#;
#<<END
TR opt: unboxed-make-rectangular.rkt 32:0 (let ((x (make-rectangular 1.0 2.0))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-make-rectangular.rkt 32:9 (make-rectangular 1.0 2.0) -- make-rectangular elimination
TR opt: unboxed-make-rectangular.rkt 33:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 33:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 33:5 x -- leave var unboxed
TR opt: unboxed-make-rectangular.rkt 33:5 x -- unbox float-complex
TR opt: unboxed-make-rectangular.rkt 33:7 2.0+4.0i -- unboxed literal
TR opt: unboxed-make-rectangular.rkt 33:7 2.0+4.0i -- unboxed literal
TR opt: unboxed-make-rectangular.rkt 34:0 (let ((x (unsafe-make-flrectangular 1.0 2.0))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-make-rectangular.rkt 34:9 (unsafe-make-flrectangular 1.0 2.0) -- make-rectangular elimination
TR opt: unboxed-make-rectangular.rkt 35:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 35:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 35:5 x -- leave var unboxed
TR opt: unboxed-make-rectangular.rkt 35:5 x -- unbox float-complex
TR opt: unboxed-make-rectangular.rkt 35:7 2.0+4.0i -- unboxed literal
TR opt: unboxed-make-rectangular.rkt 35:7 2.0+4.0i -- unboxed literal
TR opt: unboxed-make-rectangular.rkt 26:0 (let ((x (make-rectangular 1.0 2.0))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-make-rectangular.rkt 26:9 (make-rectangular 1.0 2.0) -- make-rectangular elimination
TR opt: unboxed-make-rectangular.rkt 27:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 27:5 x -- leave var unboxed
TR opt: unboxed-make-rectangular.rkt 27:7 2.0+4.0i -- unboxed literal
TR opt: unboxed-make-rectangular.rkt 28:0 (let ((x (unsafe-make-flrectangular 1.0 2.0))) (+ x 2.0+4.0i)) -- unboxed let bindings
TR opt: unboxed-make-rectangular.rkt 28:9 (unsafe-make-flrectangular 1.0 2.0) -- make-rectangular elimination
TR opt: unboxed-make-rectangular.rkt 29:2 (+ x 2.0+4.0i) -- unboxed binary float complex
TR opt: unboxed-make-rectangular.rkt 29:5 x -- leave var unboxed
TR opt: unboxed-make-rectangular.rkt 29:7 2.0+4.0i -- unboxed literal
END
#<<END
3.0+6.0i