Report missed optimizations for unary float operations.
This commit is contained in:
parent
cc129adb39
commit
647ae4fe9a
|
@ -0,0 +1,18 @@
|
|||
#;
|
||||
(
|
||||
unary-float.rkt 14:0 (#%app sin (quote 3.4)) -- unary, arg float-arg-expr, return type not Float
|
||||
unary-float.rkt 15:0 (#%app sin (quote 3)) -- unary, arg float-arg-expr, return type not Float
|
||||
unary-float.rkt 16:0 (#%app abs (quote 3.4)) -- unary, arg float-arg-expr, return type not Float
|
||||
-0.2555411020268312
|
||||
0.1411200080598672
|
||||
3.4
|
||||
3
|
||||
)
|
||||
|
||||
#lang typed/racket
|
||||
|
||||
(sin (ann 3.4 Real))
|
||||
(sin 3)
|
||||
(abs (ann 3.4 Real))
|
||||
(abs (ann 3 Integer)) ; stays within Integer, should not be reported
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
#;
|
||||
(
|
||||
float-complex-sin.rkt 15:10 (#%app + (#%app sin (#%app * t (quote 6.28))) (quote 0.0+0.0i)) -- unboxed float complex
|
||||
float-complex-sin.rkt 15:11 + -- unboxed binary float complex
|
||||
float-complex-sin.rkt 15:13 (#%app sin (#%app * t (quote 6.28))) -- float-coerce-expr in complex ops
|
||||
float-complex-sin.rkt 15:18 (#%app * t (quote 6.28)) -- binary, args all float-arg-expr, return type not Float -- caused by: 15:21 t
|
||||
float-complex-sin.rkt 15:30 0.0+0.0i -- unboxed literal
|
||||
float-complex-sin.rkt 16:10 (#%app + (#%app sin (#%app * t (quote 6.28))) (quote 0.0+0.0i)) -- unboxed float complex
|
||||
float-complex-sin.rkt 16:11 + -- unboxed binary float complex
|
||||
float-complex-sin.rkt 16:13 (#%app sin (#%app * t (quote 6.28))) -- float-coerce-expr in complex ops
|
||||
float-complex-sin.rkt 16:13 (#%app sin (#%app * t (quote 6.28))) -- unary, arg float-arg-expr, return type not Float
|
||||
float-complex-sin.rkt 16:18 (#%app * t (quote 6.28)) -- binary, args all float-arg-expr, return type not Float -- caused by: 16:21 t
|
||||
float-complex-sin.rkt 16:30 0.0+0.0i -- unboxed literal
|
||||
-0.0031853017931379904+0.0i
|
||||
)
|
||||
|
||||
|
|
|
@ -77,7 +77,13 @@
|
|||
(define-syntax-class float-opt-expr
|
||||
#:commit
|
||||
(pattern (#%plain-app (~var op (float-op unary-float-ops)) f:float-arg-expr)
|
||||
#:when (subtypeof? this-syntax -Flonum)
|
||||
#:when (let* ([safe-to-opt? (subtypeof? this-syntax -Flonum)]
|
||||
[missed-optimization? (and (not safe-to-opt?)
|
||||
(in-real-layer? this-syntax))])
|
||||
(when missed-optimization?
|
||||
(log-missed-optimization "unary, arg float-arg-expr, return type not Float"
|
||||
this-syntax))
|
||||
safe-to-opt?)
|
||||
#:with opt
|
||||
(begin (log-optimization "unary float" #'op)
|
||||
#'(op.unsafe f.opt)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user