From 6643eeb08363503a2db40ba990d9e0e4d92c5c20 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 29 Jul 2016 19:05:50 -0400 Subject: [PATCH] Fix and attempt to improve (if) optimization --- scheme/cyclone/cps-optimizations.sld | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 711bfe32..fc01d79d 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -450,7 +450,9 @@ ((if? exp) (cond ((not (if->condition exp)) - (opt:contract (if->else exp))) + (opt:inline-prims (if->else exp) refs)) ;; Always false, so replace with else + ((const? (if->condition exp)) + (opt:inline-prims (if->then exp) refs)) ;; Always true, replace with then (else `(if ,(opt:inline-prims (if->condition exp) refs) ,(opt:inline-prims (if->then exp) refs)