1 write to Ordinal
Microsoft.CodeAnalysis (1)
Operations\BasicBlock.cs (1)
41
Ordinal
= 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)
72
result = CollectRegions(Destination.
Ordinal
, Source.EnclosingRegion).ToImmutableAndFree();
115
ArrayBuilder<ControlFlowRegion> builder = CollectRegions(Source.
Ordinal
, Destination.EnclosingRegion);
Operations\ControlFlowGraphBuilder.BasicBlockBuilder.cs (2)
271
int 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)
125
if (ordinalToCompare != basicBlock.
Ordinal
)
165
if (basicBlock.EnclosingRegion?.FirstBlockOrdinal != basicBlock.
Ordinal
)
174
if (enclosingRegion?.FirstBlockOrdinal != basicBlock.
Ordinal
)
191
=> Math.Max(basicBlock.FallThroughSuccessor?.Destination?.
Ordinal
?? -1,
192
basicBlock.ConditionalSuccessor?.Destination?.
Ordinal
?? -1);
212
processedOrdinals.Add(sourceBlock.
Ordinal
);
218
Debug.Assert(ordinal < basicBlock.
Ordinal
);
246
if (!processedOrdinals.Contains(destinationBlock.
Ordinal
))
248
unprocessedOrdinals.Add(destinationBlock.
Ordinal
);
251
return destinationBlock.
Ordinal
<= basicBlock.
Ordinal
;
src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\ControlFlowBranchExtensions.cs (2)
12
controlFlowBranch.Source.
Ordinal
>= controlFlowBranch.Destination.
Ordinal
;
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysis.cs (36)
69
using var pendingBlocksNeedingAtLeastOnePass = PooledSortedSet<int>.GetInstance(cfg.Blocks.Select(b => b.
Ordinal
));
113
worklist.Add(entry.
Ordinal
);
136
blockToUniqueInputFlowMap[block.
Ordinal
] = null;
146
worklist.Add(block.
Ordinal
);
150
pendingBlocksNeedingAtLeastOnePass.Add(block.
Ordinal
);
201
unreachableBlocks.Add(block.
Ordinal
);
253
var isUnreachableBlock = unreachableBlocks.Contains(block.
Ordinal
);
262
inputDataFromInfeasibleBranchesMap.TryGetValue(block.
Ordinal
, out var currentInfeasibleData))
268
inputDataFromInfeasibleBranchesMap.Remove(block.
Ordinal
);
279
Debug.Assert(block.EnclosingRegion.FirstBlockOrdinal == block.
Ordinal
);
284
blockToUniqueInputFlowMap[block.
Ordinal
] = null;
299
block.EnclosingRegion.EnclosingRegion.FirstBlockOrdinal == block.
Ordinal
)
365
var isBackEdge = block.
Ordinal
>= successorBlock.
Ordinal
;
366
if (isUnreachableBlock && !unreachableBlocks.Contains(successorBlock.
Ordinal
))
375
if (inputDataFromInfeasibleBranchesMap.TryGetValue(successorBlock.
Ordinal
, out TAnalysisData currentInfeasibleData))
383
inputDataFromInfeasibleBranchesMap[successorBlock.
Ordinal
] = newSuccessorInput;
397
blockToUniqueInputFlowMap.TryGetValue(successorBlock.
Ordinal
, out var uniqueInputBranchOpt) &&
399
uniqueInputBranchOpt.Value.Ordinal != block.
Ordinal
||
408
blockToUniqueInputFlowMap[successorBlock.
Ordinal
] = null;
442
blockToUniqueInputFlowMap[successorBlock.
Ordinal
] = (block.
Ordinal
, blockToSuccessorBranchKind);
453
var dominatorBlockOrdinal = loopRangeMap[successorBlock.
Ordinal
];
454
Debug.Assert(dominatorBlockOrdinal >= block.
Ordinal
);
455
Debug.Assert(dominatorBlockOrdinal >= successorBlock.
Ordinal
);
457
for (int i = successorBlock.
Ordinal
; i <= dominatorBlockOrdinal + 1; i++)
465
worklist.Add(successorBlock.
Ordinal
);
497
if (catchRegion == null || sourceBlock.
Ordinal
>= catchRegion.FirstBlockOrdinal)
586
predecessorWithBranch.predecessorBlock.
Ordinal
< block.
Ordinal
&&
587
pendingBlocksNeedingAtLeastOnePass.Contains(predecessorWithBranch.predecessorBlock.
Ordinal
));
593
if (block.EnclosingRegion?.FirstBlockOrdinal == block.
Ordinal
)
624
if (finallyBlockSuccessorsMap.TryGetValue(basicBlock.
Ordinal
, out var finallySuccessors))
816
if (branch?.Destination != null && branch.IsBackEdge() && !loopRangeMap.ContainsKey(branch.Destination.
Ordinal
))
818
var maxSuccessorOrdinal = Math.Max(branch.Destination.GetMaxSuccessorOrdinal(), branch.Source.
Ordinal
);
825
loopRangeMap.Add(branch.Destination.
Ordinal
, maxSuccessorOrdinal);
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (1)
477
block.EnclosingRegion.LastBlockOrdinal == block.
Ordinal
)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\ThrownExceptionInfo.cs (1)
22
BasicBlockOrdinal = block.
Ordinal
;
Microsoft.CodeAnalysis.CodeStyle (16)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (13)
82
toVisit.Add(firstBlock.
Ordinal
);
105
if (unreachableBlock.
Ordinal
>= firstBlockOrdinal && unreachableBlock.
Ordinal
<= lastBlockOrdinal)
127
if (current.
Ordinal
< firstBlockOrdinal || current.
Ordinal
> lastBlockOrdinal)
129
outOfRangeBlocksToVisit.Add(current.
Ordinal
);
133
if (current.
Ordinal
== current.EnclosingRegion.FirstBlockOrdinal)
176
current.
Ordinal
== lastBlockOrdinal)
184
if (current.
Ordinal
== lastBlockOrdinal)
228
if (StepThroughFinally(current.EnclosingRegion, branch.Destination.
Ordinal
, ref currentAnalsisData))
241
toVisit.Add(branch.Destination.
Ordinal
);
390
Debug.Assert(entryBlock.
Ordinal
== @catch.NestedRegions[0].FirstBlockOrdinal);
392
toVisit.Add(entryBlock.
Ordinal
);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (3)
354
basicBlock.EnclosingRegion.FirstBlockOrdinal != basicBlock.
Ordinal
)
361
while (outermostEnclosingRegionStartingBlock.EnclosingRegion?.FirstBlockOrdinal == basicBlock.
Ordinal
)
402
foreach (var (symbol, write) in GetOrCreateSymbolWritesInBlockRange(containingTryCatchFinallyRegion.FirstBlockOrdinal, basicBlock.
Ordinal
- 1, cancellationToken))
Microsoft.CodeAnalysis.Test.Utilities (39)
Compilation\ControlFlowGraphVerifier.cs (26)
126
Assert.Equal(i, block.
Ordinal
);
173
enterRegions(block.EnclosingRegion, block.
Ordinal
);
195
Assert.True(previousPredecessorOrdinal < predecessor.
Ordinal
);
196
previousPredecessorOrdinal = predecessor.
Ordinal
;
197
Assert.Same(blocks[predecessor.
Ordinal
], predecessor);
251
Assert.Same(blocks[conditionalBranch.Destination.
Ordinal
], conditionalBranch.Destination);
290
Assert.Same(blocks[nextBranch.Destination.
Ordinal
], nextBranch.Destination);
296
Assert.Equal(block.EnclosingRegion.LastBlockOrdinal, block.
Ordinal
);
318
if (currentRegion.LastBlockOrdinal == block.
Ordinal
&& i != blocks.Length - 1)
320
leaveRegions(block.EnclosingRegion, block.
Ordinal
);
395
if (predecessor.Source.
Ordinal
>= i)
399
if (region.FirstBlockOrdinal != block.
Ordinal
)
464
while (region.LastBlockOrdinal == block.
Ordinal
)
486
for (int i = block.
Ordinal
; i > 0 && lastOperation == null; i--)
517
if (region.LastBlockOrdinal != block.
Ordinal
&& referencedIds.Contains(id))
522
IFlowCaptureReferenceOperation[] referencesAfter = getFlowCaptureReferenceOperationsInRegion(region, block.
Ordinal
+ 1).Where(r => r.Id.Equals(id)).ToArray();
541
foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.
Ordinal
))
568
foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.
Ordinal
))
602
foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.
Ordinal
))
645
foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.
Ordinal
))
688
foreach (IFlowCaptureOperation candidate in getFlowCaptureOperationsFromBlocksInRegion(region, block.
Ordinal
))
717
if (branch.Destination.
Ordinal
> branch.Source.
Ordinal
)
754
PooledHashSet<CaptureId> entryState = entryStates[block.
Ordinal
];
759
entryStates[block.
Ordinal
] = entryState;
1771
return $"B{block.
Ordinal
}{idSuffix}";
Compilation\FlowAnalysis\BasicBlockReachabilityDataFlowAnalyzer.cs (2)
63
_visited[basicBlock.
Ordinal
] = isReachable;
66
public override bool GetCurrentAnalysisData(BasicBlock basicBlock) => _visited[basicBlock.
Ordinal
];
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (11)
82
toVisit.Add(firstBlock.
Ordinal
);
127
if (current.
Ordinal
< firstBlockOrdinal || current.
Ordinal
> lastBlockOrdinal)
129
outOfRangeBlocksToVisit.Add(current.
Ordinal
);
133
if (current.
Ordinal
== current.EnclosingRegion.FirstBlockOrdinal)
176
current.
Ordinal
== lastBlockOrdinal)
184
if (current.
Ordinal
== lastBlockOrdinal)
228
if (StepThroughFinally(current.EnclosingRegion, branch.Destination.
Ordinal
, ref currentAnalsisData))
241
toVisit.Add(branch.Destination.
Ordinal
);
390
Debug.Assert(entryBlock.
Ordinal
== @catch.NestedRegions[0].FirstBlockOrdinal);
392
toVisit.Add(entryBlock.
Ordinal
);
Microsoft.CodeAnalysis.Workspaces (16)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (13)
82
toVisit.Add(firstBlock.
Ordinal
);
105
if (unreachableBlock.
Ordinal
>= firstBlockOrdinal && unreachableBlock.
Ordinal
<= lastBlockOrdinal)
127
if (current.
Ordinal
< firstBlockOrdinal || current.
Ordinal
> lastBlockOrdinal)
129
outOfRangeBlocksToVisit.Add(current.
Ordinal
);
133
if (current.
Ordinal
== current.EnclosingRegion.FirstBlockOrdinal)
176
current.
Ordinal
== lastBlockOrdinal)
184
if (current.
Ordinal
== lastBlockOrdinal)
228
if (StepThroughFinally(current.EnclosingRegion, branch.Destination.
Ordinal
, ref currentAnalsisData))
241
toVisit.Add(branch.Destination.
Ordinal
);
390
Debug.Assert(entryBlock.
Ordinal
== @catch.NestedRegions[0].FirstBlockOrdinal);
392
toVisit.Add(entryBlock.
Ordinal
);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (3)
354
basicBlock.EnclosingRegion.FirstBlockOrdinal != basicBlock.
Ordinal
)
361
while (outermostEnclosingRegionStartingBlock.EnclosingRegion?.FirstBlockOrdinal == basicBlock.
Ordinal
)
402
foreach (var (symbol, write) in GetOrCreateSymbolWritesInBlockRange(containingTryCatchFinallyRegion.FirstBlockOrdinal, basicBlock.
Ordinal
- 1, cancellationToken))