[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 15/30: DCE eliminates effect-free branches to the same c
From: |
Andy Wingo |
Subject: |
[Guile-commits] 15/30: DCE eliminates effect-free branches to the same continuation |
Date: |
Fri, 24 Nov 2017 09:24:21 -0500 (EST) |
wingo pushed a commit to branch master
in repository guile.
commit a3173d17581efda4db96b19ade771f63096a84db
Author: Andy Wingo <address@hidden>
Date: Tue Nov 21 21:46:08 2017 +0100
DCE eliminates effect-free branches to the same continuation
* module/language/cps/dce.scm (compute-live-code): Eliminate some
branches.
---
module/language/cps/dce.scm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/module/language/cps/dce.scm b/module/language/cps/dce.scm
index efead75..cbd12c1 100644
--- a/module/language/cps/dce.scm
+++ b/module/language/cps/dce.scm
@@ -173,8 +173,11 @@ sites."
(or
;; No defs; perhaps continuation is $ktail.
(not defs)
- ;; We don't remove branches.
- (match exp (($ $branch) #t) (_ #f))
+ ;; We don't remove branches, unless both branches go to the
+ ;; same place.
+ (match exp
+ (($ $branch kt) (not (eqv? k kt)))
+ (_ #f))
;; Do we have a live def?
(any-var-live? defs live-vars)
;; Does this expression cause all effects? If so, it's
- [Guile-commits] 22/30: Fix inference of generic < on NaN values, (continued)
- [Guile-commits] 22/30: Fix inference of generic < on NaN values, Andy Wingo, 2017/11/24
- [Guile-commits] 20/30: Add &exact-number helper definition, Andy Wingo, 2017/11/24
- [Guile-commits] 03/30: Better support for unboxed signed arithmetic, Andy Wingo, 2017/11/24
- [Guile-commits] 30/30: Optimize check-urange in assembler.scm, Andy Wingo, 2017/11/24
- [Guile-commits] 27/30: Add integer devirtualization pass., Andy Wingo, 2017/11/24
- [Guile-commits] 12/30: Remove effects-analysis exports that were undefined, Andy Wingo, 2017/11/24
- [Guile-commits] 11/30: Specialize fixnum and s64 phis, Andy Wingo, 2017/11/24
- [Guile-commits] 19/30: Add exact-integer? as interesting Tree-IL effect-free primitive, Andy Wingo, 2017/11/24
- [Guile-commits] 24/30: Declare bignum? as effect-free, Andy Wingo, 2017/11/24
- [Guile-commits] 13/30: Minor compile-cps refactor, Andy Wingo, 2017/11/24
- [Guile-commits] 15/30: DCE eliminates effect-free branches to the same continuation,
Andy Wingo <=
- [Guile-commits] 29/30: DCE of branches punches through dead terms, Andy Wingo, 2017/11/24
- [Guile-commits] 21/30: Improve type and range inference on bignums, Andy Wingo, 2017/11/24
- [Guile-commits] 10/30: Fix unboxed immediate range comparison type inference, Andy Wingo, 2017/11/24
- [Guile-commits] 04/30: Specialize-numbers reifies instructions that type-check, Andy Wingo, 2017/11/24
- [Guile-commits] 26/30: Better unboxing for logand over s64 values, Andy Wingo, 2017/11/24
- [Guile-commits] 16/30: intmap-remove returns empty-intmap if appropriate, Andy Wingo, 2017/11/24
- [Guile-commits] 25/30: Better type folding for = on exact numbers, Andy Wingo, 2017/11/24
- [Guile-commits] 28/30: Refactor to finish the primcalls-take-parameters work, Andy Wingo, 2017/11/24
- [Guile-commits] 23/30: Minor refactoring to type inference on < and =, Andy Wingo, 2017/11/24