X-Git-Url: https://git.hcoop.net/bpt/guile.git/blobdiff_plain/856d318a9f543d8a61fcf61caae7d07102586802..a9ec16f9c5574d80f66c173b495285579f5894b4:/module/language/cps/specialize-primcalls.scm diff --git a/module/language/cps/specialize-primcalls.scm b/module/language/cps/specialize-primcalls.scm index e03eb6222..cb5a70d89 100644 --- a/module/language/cps/specialize-primcalls.scm +++ b/module/language/cps/specialize-primcalls.scm @@ -1,6 +1,6 @@ ;;; Continuation-passing style (CPS) intermediate language (IL) -;; Copyright (C) 2013, 2014 Free Software Foundation, Inc. +;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -73,7 +73,7 @@ ($letk ((k* ($kargs ('val) (val) ($continue k src ($primcall 'values (val))))) (kvoid ($kargs () () - ($continue k* src ($void))))) + ($continue k* src ($const *unspecified*))))) ($continue kvoid src exp))))) (define-syntax-rule (adapt-val exp) (let-fresh (k*) (val) @@ -95,14 +95,8 @@ (('struct-ref s (? immediate-u8? n)) (adapt-val ($primcall 'struct-ref/immediate (s n)))) (('struct-set! s (? immediate-u8? n) x) - ;; Unhappily, and undocumentedly, struct-set! returns the value - ;; that was set. There is code that relies on this. Hackety - ;; hack... - (let-fresh (k*) () - (build-cps-term - ($letk ((k* ($kargs () () - ($continue k src ($primcall 'values (x)))))) - ($continue k* src ($primcall 'struct-set!/immediate (s n x))))))) + (build-cps-term + ($continue k src ($primcall 'struct-set!/immediate (s n x))))) (_ (build-cps-term ($continue k src ($primcall name args))))))