schemify: propagate 'compiler-hint:cross-module-inline through values

This change makes

 (begin-encourage-inline
   (define-values (f g h) (values e1 e2 e3)))

equivalent to

 (begin-encourage-inline
   (define f e1)
   (define g e2)
   (define h e3))
This commit is contained in:
Matthew Flatt 2021-03-17 11:10:51 -06:00
parent 4a65dfb1aa
commit db34c62241
2 changed files with 19 additions and 5 deletions

View File

@ -16028,11 +16028,13 @@
(call-with-values
(lambda ()
(let ((temp26_0
(list
'define-values
(propagate-inline-hint
v5_0
(list
id_0)
rhs_2)))
'define-values
(list
id_0)
rhs_2))))
(find-definitions.1
optimize?2_0
hash2610
@ -16069,6 +16071,11 @@
(loop_0 rhs_0)))
(args (raise-binding-result-arity-error 2 args))))
(values knowns7_0 #f)))))))))))
(define propagate-inline-hint
(lambda (defn_0 new-defn_0)
(if (wrap-property defn_0 'compiler-hint:cross-module-inline)
(wrap-property-set new-defn_0 'compiler-hint:cross-module-inline #t)
new-defn_0)))
(define struct-convert
(lambda (form_0
prim-knowns_0

View File

@ -129,7 +129,7 @@
(for/fold ([knowns knowns]) ([id (in-list ids)]
[rhs (in-list rhss)])
(define-values (new-knowns info)
(find-definitions `(define-values (,id) ,rhs)
(find-definitions (propagate-inline-hint v `(define-values (,id) ,rhs))
prim-knowns knowns imports mutated simples unsafe-mode? target
#:optimize? optimize?))
new-knowns)
@ -137,3 +137,10 @@
[else (values knowns #f)])]
[`,_ (values knowns #f)]))]
[`,_ (values knowns #f)]))
;; ----------------------------------------
(define (propagate-inline-hint defn new-defn)
(if (wrap-property defn 'compiler-hint:cross-module-inline)
(wrap-property-set new-defn 'compiler-hint:cross-module-inline #t)
new-defn))