107 |
(t (incf *inline-blocks*)))) |
(t (incf *inline-blocks*)))) |
108 |
|
|
109 |
(defun inline-args (forms types &optional fun &aux (locs nil) ii) |
(defun inline-args (forms types &optional fun &aux (locs nil) ii) |
110 |
|
(let ((arg-side-effects (args-cause-side-effect forms))) |
111 |
(do ((forms forms (cdr forms)) |
(do ((forms forms (cdr forms)) |
112 |
(types types (cdr types))) |
(types types (cdr types))) |
113 |
((endp forms) (reverse locs)) |
((endp forms) (reverse locs)) |
133 |
(wt-var (caaddr form) (cadr (caddr form))) |
(wt-var (caaddr form) (cadr (caddr form))) |
134 |
(wt ";") |
(wt ";") |
135 |
(push (coerce-loc temp type) locs))))) |
(push (coerce-loc temp type) locs))))) |
136 |
((and (member (var-kind (caaddr form)) |
((or arg-side-effects |
137 |
'(FIXNUM LONG-FLOAT SHORT-FLOAT INTEGER)) |
(and (member (var-kind (caaddr form)) |
138 |
(not (eq type (var-kind (caaddr form))))) |
'(FIXNUM LONG-FLOAT SHORT-FLOAT INTEGER)) |
139 |
|
(not (eq type (var-kind (caaddr form)))))) |
140 |
(let ((temp (cs-push type))) |
(let ((temp (cs-push type))) |
141 |
(wt-nl "V" temp " = " |
(wt-nl "V" temp " = " |
142 |
(coerce-loc (cons 'var (caddr form)) type) ";") |
(coerce-loc (cons 'var (caddr form)) type) ";") |
235 |
(t (list 'vs (vs-push)))))) |
(t (list 'vs (vs-push)))))) |
236 |
(let ((*value-to-go* temp)) |
(let ((*value-to-go* temp)) |
237 |
(c2expr* form) |
(c2expr* form) |
238 |
(push (coerce-loc temp type) locs))))))) |
(push (coerce-loc temp type) locs)))))))) |
239 |
) |
) |
240 |
|
|
241 |
(defun coerce-loc (loc type) |
(defun coerce-loc (loc type) |