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:
parent
7162c758b3
commit
d4addf3792
1 changed files with 5 additions and 3 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue