+ (codegen-pop-function codegen name type)
+
+ ;; If this is a varargs method then we've made the
+ ;; `:valist' role. Also make the `nil' role.
+ (when parm-n
+ (let ((call (apply #'make-call-inst name "me"
+ (mapcar #'argument-name entry-args)))
+ (main (method-entry-function-name method head nil))
+ (main-type (c-type (fun (lisp return-type)
+ ("me" (* (class tail)))
+ . raw-entry-args))))
+ (codegen-push codegen)
+ (ensure-var codegen *sod-ap* c-type-va-list)
+ (convert-stmts codegen entry-target return-type
+ (lambda (target)
+ (deliver-call codegen :void "va_start"
+ *sod-ap* parm-n)
+ (deliver-expr codegen target call)
+ (deliver-call codegen :void "va_end"
+ *sod-ap*)))
+ (codegen-pop-function codegen main main-type))))))