Example #1
0
        protected override InstructionFlags ComputeFlags()
        {
            var sectionFlags = InstructionFlags.EndPointUnreachable;             // neutral element for CombineBranches()

            foreach (var section in Sections)
            {
                sectionFlags = SemanticHelper.CombineBranches(sectionFlags, section.Flags);
            }
            return(value.Flags | InstructionFlags.ControlFlow | sectionFlags);
        }
Example #2
0
        protected override InstructionFlags ComputeFlags()
        {
            var flags = TryBlock.Flags;

            foreach (var handler in Handlers)
            {
                flags = SemanticHelper.CombineBranches(flags, handler.Flags);
            }
            return(flags | InstructionFlags.ControlFlow);
        }
 protected override InstructionFlags ComputeFlags()
 {
     // left is always executed; right only sometimes
     return(DirectFlags | left.Flags
            | SemanticHelper.CombineBranches(InstructionFlags.None, right.Flags));
 }
Example #4
0
 protected override InstructionFlags ComputeFlags()
 {
     // valueInst is always executed; fallbackInst only sometimes
     return(InstructionFlags.ControlFlow | valueInst.Flags
            | SemanticHelper.CombineBranches(InstructionFlags.None, fallbackInst.Flags));
 }
Example #5
0
 protected override InstructionFlags ComputeFlags()
 {
     return(InstructionFlags.ControlFlow | condition.Flags | SemanticHelper.CombineBranches(trueInst.Flags, falseInst.Flags));
 }