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)
69using var pendingBlocksNeedingAtLeastOnePass = PooledSortedSet<int>.GetInstance(cfg.Blocks.Select(b => b.Ordinal)); 113worklist.Add(entry.Ordinal); 136blockToUniqueInputFlowMap[block.Ordinal] = null; 146worklist.Add(block.Ordinal); 150pendingBlocksNeedingAtLeastOnePass.Add(block.Ordinal); 201unreachableBlocks.Add(block.Ordinal); 253var isUnreachableBlock = unreachableBlocks.Contains(block.Ordinal); 262inputDataFromInfeasibleBranchesMap.TryGetValue(block.Ordinal, out var currentInfeasibleData)) 268inputDataFromInfeasibleBranchesMap.Remove(block.Ordinal); 279Debug.Assert(block.EnclosingRegion.FirstBlockOrdinal == block.Ordinal); 284blockToUniqueInputFlowMap[block.Ordinal] = null; 299block.EnclosingRegion.EnclosingRegion.FirstBlockOrdinal == block.Ordinal) 365var isBackEdge = block.Ordinal >= successorBlock.Ordinal; 366if (isUnreachableBlock && !unreachableBlocks.Contains(successorBlock.Ordinal)) 375if (inputDataFromInfeasibleBranchesMap.TryGetValue(successorBlock.Ordinal, out TAnalysisData currentInfeasibleData)) 383inputDataFromInfeasibleBranchesMap[successorBlock.Ordinal] = newSuccessorInput; 397blockToUniqueInputFlowMap.TryGetValue(successorBlock.Ordinal, out var uniqueInputBranchOpt) && 399uniqueInputBranchOpt.Value.Ordinal != block.Ordinal || 408blockToUniqueInputFlowMap[successorBlock.Ordinal] = null; 442blockToUniqueInputFlowMap[successorBlock.Ordinal] = (block.Ordinal, blockToSuccessorBranchKind); 453var dominatorBlockOrdinal = loopRangeMap[successorBlock.Ordinal]; 454Debug.Assert(dominatorBlockOrdinal >= block.Ordinal); 455Debug.Assert(dominatorBlockOrdinal >= successorBlock.Ordinal); 457for (int i = successorBlock.Ordinal; i <= dominatorBlockOrdinal + 1; i++) 465worklist.Add(successorBlock.Ordinal); 497if (catchRegion == null || sourceBlock.Ordinal >= catchRegion.FirstBlockOrdinal) 586predecessorWithBranch.predecessorBlock.Ordinal < block.Ordinal && 587pendingBlocksNeedingAtLeastOnePass.Contains(predecessorWithBranch.predecessorBlock.Ordinal)); 593if (block.EnclosingRegion?.FirstBlockOrdinal == block.Ordinal) 624if (finallyBlockSuccessorsMap.TryGetValue(basicBlock.Ordinal, out var finallySuccessors)) 816if (branch?.Destination != null && branch.IsBackEdge() && !loopRangeMap.ContainsKey(branch.Destination.Ordinal)) 818var maxSuccessorOrdinal = Math.Max(branch.Destination.GetMaxSuccessorOrdinal(), branch.Source.Ordinal); 825loopRangeMap.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))