From 89c58f8b4483ff57b1468c2cc784e00b2e49864e Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 13 Jul 2017 10:35:10 +0000 Subject: [PATCH] Omit C meaningless expressions When compiling Cyc-seq expressions there are cases where the generated C code would have no effect. Just omit it in this case to prevent a warning from the C compiler. --- scheme/cyclone/cgen.sld | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index c3491d6a..e2e3c9b9 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -828,11 +828,17 @@ ((equal? 'Cyc-seq fun) (let ((exps (foldr (lambda (expr acc) - ;(c:append - (let ((cp1 (c-compile-exp expr append-preamble cont trace cps?)) + ;; 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 trace cps?))) (cp2 acc)) (c-code/vars - (string-append (c:body cp1) ";" (c:body cp2)) + (let ((cp1-body (c:body cp1))) + (if (zero? (string-length cp1-body)) + (c:body cp2) ;; Ignore cp1 if necessary + (string-append cp1-body ";" (c:body cp2)))) (append (c:allocs cp1) (c:allocs cp2))))) (c-code "") args)))