From 1187d7fab1e18b79dfc5d128008d189655f3a542 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 12 Apr 2021 14:19:13 -0400 Subject: [PATCH] Issue #455 - Avoid generating C code containing unused variables --- CHANGELOG.md | 6 ++++++ scheme/cyclone/cgen.sld | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) 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)))