From e68fa56f9477bd47313e5f9ac4d2f4f286baff0f Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 22 Mar 2019 12:26:10 -0400 Subject: [PATCH] Bugfix - account for the use-alloca flag --- scheme/cyclone/cgen.sld | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index f72ac8e5..fa870d23 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -447,7 +447,11 @@ (letrec ((cvar-name (mangle (gensym 'vec))) (len (vector-length exp)) (ev-name (mangle (gensym 'e))) - (elem-decl (string-append "object * " ev-name " [" (number->string len) "];\n")) + (elem-decl + (if use-alloca + (string-append "object *" ev-name " = (object *)alloca(sizeof(object) * " + (number->string len) ");") + (string-append "object " ev-name " [" (number->string len) "];\n"))) (addr-op (if use-alloca "" "&")) (deref-op (if use-alloca "->" ".")) (c-make-macro (if use-alloca "alloca_empty_vector" "make_empty_vector")) @@ -1584,7 +1588,11 @@ (string-append "closureN_type * " cv-name " = alloca(sizeof(closureN_type));\n") (string-append "closureN_type " cv-name ";\n"))) (ev-name (mangle (gensym 'e))) - (elem-decl (string-append "object * " ev-name " [" (number->string (length free-vars)) "];\n")) + (elem-decl + (if use-alloca? + (string-append "object *" ev-name " = (object *)alloca(sizeof(object) * " + (number->string (length free-vars)) ");") + (string-append "object " ev-name " [" (number->string (length free-vars)) "];\n"))) (sep (if use-alloca? "->" "."))) (string-append decl