rendered paste bodyEffect:
[(if ,test ,[c-code*] (nop)) ; one-armed if pattern
(let ([join-label (unique-label 'join)])
(let ([t-code* (Pred test #f altern-label)])
`(,t-code* ...
,c-code* ...
,join-label)))]
[(if ,test ,[c-code*] ,[a-code*])
(let ([altern-label (unique-label 'altern)]
[join-label (unique-label 'join)])
(let ([t-code* (Pred test #f altern-label)])
`(,t-code* ...
,c-code* ...
(jump (label ,join-label))
,altern-label
,a-code* ...
,join-label)))]
Pred:
[(true)
(if true-label
`((jump (label ,true-label)))
'())]
[(false)
(if false-label
`((jump (label ,false-label)))
'())]
[(if ,test ,conseq ,[a-code*])
(let ([altern-label (unique-label 'altern)]
[join-label (unique-label 'join)])
(let ([t-code* (Pred test #f altern-label)]
[c-code* (Pred conseq true-label false-label)])
`(,t-code* ...
,c-code* ...
(jump (label ,join-label))
,altern-label
,a-code* ...
,join-label)))]
Tail:
[(if ,test ,[c-code*] ,[a-code*])
(let ([altern-label (unique-label 'altern)])
(let ([t-code* (Pred test #f altern-label)])
`(,t-code* ...
,c-code* ...
,altern-label
,a-code* ...)))]