1 write to Ordinal
Microsoft.CodeAnalysis (1)
Operations\BasicBlock.cs (1)
41Ordinal = ordinal;
133 references to Ordinal
ILLink.RoslynAnalyzer (5)
DataFlow\ControlFlowGraphProxy.cs (1)
30 return base.ToString () + $"[{Block.Ordinal}]";
TrimAnalysis\TrimDataFlowAnalysis.cs (4)
114 TraceWrite ("block " + block.Block.Ordinal + ": "); 125 TraceWrite (predProxy.Block.Ordinal + " "); 185 var source = branch.Source.Block.Ordinal; 186 var target = branch.Destination?.Block.Ordinal;
Microsoft.CodeAnalysis (6)
Operations\ControlFlowBranch.cs (2)
72result = CollectRegions(Destination.Ordinal, Source.EnclosingRegion).ToImmutableAndFree(); 115ArrayBuilder<ControlFlowRegion> builder = CollectRegions(Source.Ordinal, Destination.EnclosingRegion);
Operations\ControlFlowGraphBuilder.BasicBlockBuilder.cs (2)
271int result = x.Source.Ordinal - y.Source.Ordinal;
Operations\ControlFlowRegion.cs (2)
34/// Ordinal (<see cref="BasicBlock.Ordinal"/>) of the first <see cref="BasicBlock"/> within the region. 39/// Ordinal (<see cref="BasicBlock.Ordinal"/>) of the last <see cref="BasicBlock"/> within the region.
Microsoft.CodeAnalysis.AnalyzerUtilities (51)
src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\BasicBlockExtensions.cs (11)
125if (ordinalToCompare != basicBlock.Ordinal) 165if (basicBlock.EnclosingRegion?.FirstBlockOrdinal != basicBlock.Ordinal) 174if (enclosingRegion?.FirstBlockOrdinal != basicBlock.Ordinal) 191=> Math.Max(basicBlock.FallThroughSuccessor?.Destination?.Ordinal ?? -1, 192basicBlock.ConditionalSuccessor?.Destination?.Ordinal ?? -1); 212processedOrdinals.Add(sourceBlock.Ordinal); 218Debug.Assert(ordinal < basicBlock.Ordinal); 246if (!processedOrdinals.Contains(destinationBlock.Ordinal)) 248unprocessedOrdinals.Add(destinationBlock.Ordinal); 251return destinationBlock.Ordinal <= basicBlock.Ordinal;
src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\ControlFlowBranchExtensions.cs (2)
12controlFlowBranch.Source.Ordinal >= controlFlowBranch.Destination.Ordinal;
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysis.cs (36)
70using var pendingBlocksNeedingAtLeastOnePass = PooledSortedSet<int>.GetInstance(cfg.Blocks.Select(b => b.Ordinal)); 114worklist.Add(entry.Ordinal); 137blockToUniqueInputFlowMap[block.Ordinal] = null; 147worklist.Add(block.Ordinal); 151pendingBlocksNeedingAtLeastOnePass.Add(block.Ordinal); 202unreachableBlocks.Add(block.Ordinal); 254var isUnreachableBlock = unreachableBlocks.Contains(block.Ordinal); 263inputDataFromInfeasibleBranchesMap.TryGetValue(block.Ordinal, out var currentInfeasibleData)) 269inputDataFromInfeasibleBranchesMap.Remove(block.Ordinal); 280Debug.Assert(block.EnclosingRegion.FirstBlockOrdinal == block.Ordinal); 285blockToUniqueInputFlowMap[block.Ordinal] = null; 300block.EnclosingRegion.EnclosingRegion.FirstBlockOrdinal == block.Ordinal) 366var isBackEdge = block.Ordinal >= successorBlock.Ordinal; 367if (isUnreachableBlock && !unreachableBlocks.Contains(successorBlock.Ordinal)) 376if (inputDataFromInfeasibleBranchesMap.TryGetValue(successorBlock.Ordinal, out TAnalysisData currentInfeasibleData)) 384inputDataFromInfeasibleBranchesMap[successorBlock.Ordinal] = newSuccessorInput; 398blockToUniqueInputFlowMap.TryGetValue(successorBlock.Ordinal, out var uniqueInputBranchOpt) && 400uniqueInputBranchOpt.Value.Ordinal != block.Ordinal || 409blockToUniqueInputFlowMap[successorBlock.Ordinal] = null; 443blockToUniqueInputFlowMap[successorBlock.Ordinal] = (block.Ordinal, blockToSuccessorBranchKind); 454var dominatorBlockOrdinal = loopRangeMap[successorBlock.Ordinal]; 455Debug.Assert(dominatorBlockOrdinal >= block.Ordinal); 456Debug.Assert(dominatorBlockOrdinal >= successorBlock.Ordinal); 458for (int i = successorBlock.Ordinal; i <= dominatorBlockOrdinal + 1; i++) 466worklist.Add(successorBlock.Ordinal); 498if (catchRegion == null || sourceBlock.Ordinal >= catchRegion.FirstBlockOrdinal) 587predecessorWithBranch.predecessorBlock.Ordinal < block.Ordinal && 588pendingBlocksNeedingAtLeastOnePass.Contains(predecessorWithBranch.predecessorBlock.Ordinal)); 594if (block.EnclosingRegion?.FirstBlockOrdinal == block.Ordinal) 625if (finallyBlockSuccessorsMap.TryGetValue(basicBlock.Ordinal, out var finallySuccessors)) 817if (branch?.Destination != null && branch.IsBackEdge() && !loopRangeMap.ContainsKey(branch.Destination.Ordinal)) 819var maxSuccessorOrdinal = Math.Max(branch.Destination.GetMaxSuccessorOrdinal(), branch.Source.Ordinal); 826loopRangeMap.Add(branch.Destination.Ordinal, maxSuccessorOrdinal);
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (1)
477block.EnclosingRegion.LastBlockOrdinal == block.Ordinal)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\ThrownExceptionInfo.cs (1)
22BasicBlockOrdinal = block.Ordinal;
Microsoft.CodeAnalysis.CodeStyle (16)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (13)
82toVisit.Add(firstBlock.Ordinal); 105if (unreachableBlock.Ordinal >= firstBlockOrdinal && unreachableBlock.Ordinal <= lastBlockOrdinal) 127if (current.Ordinal < firstBlockOrdinal || current.Ordinal > lastBlockOrdinal) 129outOfRangeBlocksToVisit.Add(current.Ordinal); 133if (current.Ordinal == current.EnclosingRegion.FirstBlockOrdinal) 176current.Ordinal == lastBlockOrdinal) 184if (current.Ordinal == lastBlockOrdinal) 228if (StepThroughFinally(current.EnclosingRegion, branch.Destination.Ordinal, ref currentAnalsisData)) 241toVisit.Add(branch.Destination.Ordinal); 390Debug.Assert(entryBlock.Ordinal == @catch.NestedRegions[0].FirstBlockOrdinal); 392toVisit.Add(entryBlock.Ordinal);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (3)
354basicBlock.EnclosingRegion.FirstBlockOrdinal != basicBlock.Ordinal) 361while (outermostEnclosingRegionStartingBlock.EnclosingRegion?.FirstBlockOrdinal == basicBlock.Ordinal) 402foreach (var (symbol, write) in GetOrCreateSymbolWritesInBlockRange(containingTryCatchFinallyRegion.FirstBlockOrdinal, basicBlock.Ordinal - 1, cancellationToken))
Microsoft.CodeAnalysis.Test.Utilities (39)
Compilation\ControlFlowGraphVerifier.cs (26)
126Assert.Equal(i, block.Ordinal); 173enterRegions(block.EnclosingRegion, block.Ordinal); 195Assert.True(previousPredecessorOrdinal < predecessor.Ordinal); 196previousPredecessorOrdinal = predecessor.Ordinal; 197Assert.Same(blocks[predecessor.Ordinal], predecessor); 251Assert.Same(blocks[conditionalBranch.Destination.Ordinal], conditionalBranch.Destination); 290Assert.Same(blocks[nextBranch.Destination.Ordinal], nextBranch.Destination); 296Assert.Equal(block.EnclosingRegion.LastBlockOrdinal, block.Ordinal); 318if (currentRegion.LastBlockOrdinal == block.Ordinal && i != blocks.Length - 1) 320leaveRegions(block.EnclosingRegion, block.Ordinal); 395if (predecessor.Source.Ordinal >= i) 399if (region.FirstBlockOrdinal != block.Ordinal) 464while (region.LastBlockOrdinal == block.Ordinal) 486for (int i = block.Ordinal; i > 0 && lastOperation == null; i--) 517if (region.LastBlockOrdinal != block.Ordinal && referencedIds.Contains(id)) 522IFlowCaptureReferenceOperation[] referencesAfter = getFlowCaptureReferenceOperationsInRegion(region, block.Ordinal + 1).Where(r => r.Id.Equals(id)).ToArray(); 541foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.Ordinal)) 568foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.Ordinal)) 602foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.Ordinal)) 645foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.Ordinal)) 688foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.Ordinal)) 717if (branch.Destination.Ordinal > branch.Source.Ordinal) 754PooledHashSet<CaptureId> entryState = entryStates[block.Ordinal]; 759entryStates[block.Ordinal] = entryState; 1771return $"B{block.Ordinal}{idSuffix}";
Compilation\FlowAnalysis\BasicBlockReachabilityDataFlowAnalyzer.cs (2)
63_visited[basicBlock.Ordinal] = isReachable; 66public override bool GetCurrentAnalysisData(BasicBlock basicBlock) => _visited[basicBlock.Ordinal];
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (11)
82toVisit.Add(firstBlock.Ordinal); 127if (current.Ordinal < firstBlockOrdinal || current.Ordinal > lastBlockOrdinal) 129outOfRangeBlocksToVisit.Add(current.Ordinal); 133if (current.Ordinal == current.EnclosingRegion.FirstBlockOrdinal) 176current.Ordinal == lastBlockOrdinal) 184if (current.Ordinal == lastBlockOrdinal) 228if (StepThroughFinally(current.EnclosingRegion, branch.Destination.Ordinal, ref currentAnalsisData)) 241toVisit.Add(branch.Destination.Ordinal); 390Debug.Assert(entryBlock.Ordinal == @catch.NestedRegions[0].FirstBlockOrdinal); 392toVisit.Add(entryBlock.Ordinal);
Microsoft.CodeAnalysis.Workspaces (16)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (13)
82toVisit.Add(firstBlock.Ordinal); 105if (unreachableBlock.Ordinal >= firstBlockOrdinal && unreachableBlock.Ordinal <= lastBlockOrdinal) 127if (current.Ordinal < firstBlockOrdinal || current.Ordinal > lastBlockOrdinal) 129outOfRangeBlocksToVisit.Add(current.Ordinal); 133if (current.Ordinal == current.EnclosingRegion.FirstBlockOrdinal) 176current.Ordinal == lastBlockOrdinal) 184if (current.Ordinal == lastBlockOrdinal) 228if (StepThroughFinally(current.EnclosingRegion, branch.Destination.Ordinal, ref currentAnalsisData)) 241toVisit.Add(branch.Destination.Ordinal); 390Debug.Assert(entryBlock.Ordinal == @catch.NestedRegions[0].FirstBlockOrdinal); 392toVisit.Add(entryBlock.Ordinal);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (3)
354basicBlock.EnclosingRegion.FirstBlockOrdinal != basicBlock.Ordinal) 361while (outermostEnclosingRegionStartingBlock.EnclosingRegion?.FirstBlockOrdinal == basicBlock.Ordinal) 402foreach (var (symbol, write) in GetOrCreateSymbolWritesInBlockRange(containingTryCatchFinallyRegion.FirstBlockOrdinal, basicBlock.Ordinal - 1, cancellationToken))