diff --git a/CHANGELOG.md b/CHANGELOG.md index 87083e53..2844e78b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## TBD + +Bug Fixes + +- Avoid generating C code containing unused variables. In addition to generating better code this also prevents the C compiler from raising associated warnings. + ## 0.28.0 - April 8, 2021 Features diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index f4561a2a..f544aaa8 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -1299,10 +1299,15 @@ (let ((exps (foldr (lambda (expr acc) ;; Join expressions; based on c:append - (let ((cp1 (if (ref? expr) - ;; Ignore lone ref to avoid C warning - (c:code/vars "" '()) - (c-compile-exp expr append-preamble cont ast-id trace cps?))) + (let ((cp1 (cond + ((ref? expr) + ;; Ignore lone ref to avoid C warning + (c:code/vars "" '())) + ((tagged-list? '%closure expr) + ;; Discard unused func and avoid C warning + (c:code/vars "" '())) + (else + (c-compile-exp expr append-preamble cont ast-id trace cps?)))) (cp2 acc)) (c:code/vars (let ((cp1-body (c:body cp1)))