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)
70
using var pendingBlocksNeedingAtLeastOnePass = PooledSortedSet<int>.GetInstance(cfg.Blocks.Select(b => b.
Ordinal
));
114
worklist.Add(entry.
Ordinal
);
137
blockToUniqueInputFlowMap[block.
Ordinal
] = null;
147
worklist.Add(block.
Ordinal
);
151
pendingBlocksNeedingAtLeastOnePass.Add(block.
Ordinal
);
202
unreachableBlocks.Add(block.
Ordinal
);
254
var isUnreachableBlock = unreachableBlocks.Contains(block.
Ordinal
);
263
inputDataFromInfeasibleBranchesMap.TryGetValue(block.
Ordinal
, out var currentInfeasibleData))
269
inputDataFromInfeasibleBranchesMap.Remove(block.
Ordinal
);
280
Debug.Assert(block.EnclosingRegion.FirstBlockOrdinal == block.
Ordinal
);
285
blockToUniqueInputFlowMap[block.
Ordinal
] = null;
300
block.EnclosingRegion.EnclosingRegion.FirstBlockOrdinal == block.
Ordinal
)
366
var isBackEdge = block.
Ordinal
>= successorBlock.
Ordinal
;
367
if (isUnreachableBlock && !unreachableBlocks.Contains(successorBlock.
Ordinal
))
376
if (inputDataFromInfeasibleBranchesMap.TryGetValue(successorBlock.
Ordinal
, out TAnalysisData currentInfeasibleData))
384
inputDataFromInfeasibleBranchesMap[successorBlock.
Ordinal
] = newSuccessorInput;
398
blockToUniqueInputFlowMap.TryGetValue(successorBlock.
Ordinal
, out var uniqueInputBranchOpt) &&
400
uniqueInputBranchOpt.Value.Ordinal != block.
Ordinal
||
409
blockToUniqueInputFlowMap[successorBlock.
Ordinal
] = null;
443
blockToUniqueInputFlowMap[successorBlock.
Ordinal
] = (block.
Ordinal
, blockToSuccessorBranchKind);
454
var dominatorBlockOrdinal = loopRangeMap[successorBlock.
Ordinal
];
455
Debug.Assert(dominatorBlockOrdinal >= block.
Ordinal
);
456
Debug.Assert(dominatorBlockOrdinal >= successorBlock.
Ordinal
);
458
for (int i = successorBlock.
Ordinal
; i <= dominatorBlockOrdinal + 1; i++)
466
worklist.Add(successorBlock.
Ordinal
);
498
if (catchRegion == null || sourceBlock.
Ordinal
>= catchRegion.FirstBlockOrdinal)
587
predecessorWithBranch.predecessorBlock.
Ordinal
< block.
Ordinal
&&
588
pendingBlocksNeedingAtLeastOnePass.Contains(predecessorWithBranch.predecessorBlock.
Ordinal
));
594
if (block.EnclosingRegion?.FirstBlockOrdinal == block.
Ordinal
)
625
if (finallyBlockSuccessorsMap.TryGetValue(basicBlock.
Ordinal
, out var finallySuccessors))
817
if (branch?.Destination != null && branch.IsBackEdge() && !loopRangeMap.ContainsKey(branch.Destination.
Ordinal
))
819
var maxSuccessorOrdinal = Math.Max(branch.Destination.GetMaxSuccessorOrdinal(), branch.Source.
Ordinal
);
826
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))