diff --git a/mats/3.ms b/mats/3.ms index 2410d66d9e..8658669d50 100644 --- a/mats/3.ms +++ b/mats/3.ms @@ -2069,6 +2069,24 @@ (lambda l (equal? l '((7))))) #t #f) + + ; regression test for handling mvcall with inline form + (equal? + '(result x) + (let ([bx (box #f)]) + (define-record-type thing + (fields pos) + (nongenerative #{thing hlg584lmg5htbdauw7dkid2sh-0})) + (set-box! bx (make-thing 'x)) + (let ([posx (unbox bx)]) + (cons 'result + (call-with-values + (lambda () + (if (thing? posx) + ;; compiled as inline load: + (thing-pos posx) + (do-something-else))) + list))))) ) (mat let-values diff --git a/s/cpnanopass.ss b/s/cpnanopass.ss index 912823ce10..b1671ac4c8 100644 --- a/s/cpnanopass.ss +++ b/s/cpnanopass.ss @@ -10434,7 +10434,7 @@ (let ([tmp (make-tmp 't)]) `(seq (set! ,tmp ,rhs) - (mvcall ,(make-info-call-like info '()) #f ,consumer ,tmp ())))] + ,(k `(mvcall ,(make-info-call-like info '()) #f ,consumer ,tmp ()))))] [else ; set! & mvset `(seq ,e ,(k `(mvcall ,(make-info-call-like info '()) #f ,consumer ,(%constant svoid) ())))])))))) (CaseLambdaClause : CaseLambdaClause (ir) -> CaseLambdaClause ()