public QilNode Choice(QilNode expr, QilList branches)
{
if (!_debug)
{
switch (branches.Count)
{
case 1:
// If expr has no side effects, it will be eliminated by optimizer
return(_f.Loop(_f.Let(expr), branches[0]));
case 2:
return(_f.Conditional(_f.Eq(expr, _f.LiteralInt32(0)), branches[0], branches[1]));
}
}
return(_f.Choice(expr, branches));
}