public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
        {
            BoundExpression condition = (BoundExpression)this.Visit(node.Condition);

            if (condition.Kind != BoundKind.SpillSequence)
            {
                return node.Update(condition, node.JumpIfTrue, node.Label);
            }

            var spill = (BoundSpillSequence)condition;
            return RewriteSpillSequenceAsBlock(spill,
                node.Update(spill.Value, node.JumpIfTrue, node.Label));
        }
        public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
        {
            BoundExpression condition = (BoundExpression)this.Visit(node.Condition);

            if (condition.Kind != BoundKind.SpillSequence)
            {
                return(node.Update(condition, node.JumpIfTrue, node.Label));
            }

            var spill = (BoundSpillSequence)condition;

            return(RewriteSpillSequenceAsBlock(spill,
                                               node.Update(spill.Value, node.JumpIfTrue, node.Label)));
        }
Пример #3
0
        public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
        {
            BoundSpillSequenceBuilder builder = null;
            var condition = VisitExpression(ref builder, node.Condition);

            return(UpdateStatement(builder, node.Update(condition, node.JumpIfTrue, node.Label)));
        }
Пример #4
0
        public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
        {
            Debug.Assert(tempSubstitution.Count == 0);

            BoundSpillSequenceBuilder builder = null;
            var condition = VisitExpression(ref builder, node.Condition);

            return(UpdateStatement(builder, node.Update(condition, node.JumpIfTrue, node.Label), substituteTemps: true));
        }
Пример #5
0
 public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
 {
     BoundSpillSequence2 ss = null;
     var condition = VisitExpression(ref ss, node.Condition);
     return UpdateStatement(ss, node.Update(condition, node.JumpIfTrue, node.Label));
 }