1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 22:31:12 +02:00

Bug-fix to devirtualize-integers pass

* module/language/cps/devirtualize-integers.scm (peel-trace): Only
  terminate a trace at a branch if the set of live vars is empty.
This commit is contained in:
Andy Wingo 2018-01-07 12:58:32 +01:00
parent 7162c758b3
commit d4addf3792

View file

@ -170,7 +170,7 @@ the trace should be referenced outside of it."
(can-terminate-trace? uses-of-interest?)
(peeled-args (rename-uses args)))
(cond
((not (any-use-of-interest? args))
((not uses-of-interest?)
(fail))
((bailout? kt)
(continue kf live-vars defs-of-interest? can-terminate-trace?
@ -182,12 +182,14 @@ the trace should be referenced outside of it."
(lambda (kt)
(build-term
($branch kf kt src op param peeled-args)))))
(else
((eq? live-vars empty-intmap)
(with-cps cps
(letk label*
($kargs names peeled-vars
($branch kf kt src op param peeled-args)))
label*)))))
label*))
(else
(fail)))))
(($ $continue k src exp)
(match exp
(($ $const)