100 |
nd |
nd |
101 |
end |
end |
102 |
| SrcIR.COND{cond, trueBranch, falseBranch, ...} => let |
| SrcIR.COND{cond, trueBranch, falseBranch, ...} => let |
103 |
val nd = newNd (DstNd.mkCOND(rename env cond)) |
val nd = newNd (DstNd.mkCOND(rename env (!cond))) |
104 |
val trueB = trans (!trueBranch) |
val trueB = trans (!trueBranch) |
105 |
val _ = (DstNd.setTrueBranch (nd, trueB); DstNd.setPred(trueB, nd)) |
val _ = (DstNd.setTrueBranch (nd, trueB); DstNd.setPred(trueB, nd)) |
106 |
val falseB = trans (!falseBranch) |
val falseB = trans (!falseBranch) |
109 |
nd |
nd |
110 |
end |
end |
111 |
| SrcIR.FOREACH{var, src, phis, mask, bodyEntry, succ, ...} => let |
| SrcIR.FOREACH{var, src, phis, mask, bodyEntry, succ, ...} => let |
112 |
val nd = newNd (DstNd.mkFOREACH(rename env var, rename env src)) |
val nd = newNd (DstNd.mkFOREACH(rename env var, rename env (!src))) |
113 |
val bodyB = trans (!bodyEntry) |
val bodyB = trans (!bodyEntry) |
114 |
val _ = (DstNd.setBodyEntry (nd, bodyB); DstNd.setPred(bodyB, nd)) |
val _ = (DstNd.setBodyEntry (nd, bodyB); DstNd.setPred(bodyB, nd)) |
115 |
in |
in |