Skip to content

Commit 6b259a2

Browse files
authored
JIT: remove unneeded keep flag from loop header blocks (#117227)
If we create a preheader for a loop whose header is a try entry, and put that preheader in the same EH region, the header no longer needs special protection.
1 parent d007590 commit 6b259a2

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/coreclr/jit/optimizer.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2557,6 +2557,7 @@ bool Compiler::optCreatePreheader(FlowGraphNaturalLoop* loop)
25572557
//
25582558
unsigned preheaderEHRegion = EHblkDsc::NO_ENCLOSING_INDEX;
25592559
bool inSameRegionAsHeader = true;
2560+
bool headerIsTryEntry = bbIsTryBeg(header);
25602561
if (header->hasTryIndex())
25612562
{
25622563
preheaderEHRegion = header->getTryIndex();
@@ -2594,6 +2595,14 @@ bool Compiler::optCreatePreheader(FlowGraphNaturalLoop* loop)
25942595
if (inSameRegionAsHeader)
25952596
{
25962597
fgExtendEHRegionBefore(header);
2598+
2599+
// If the header was a try region entry, it no longer is.
2600+
//
2601+
if (headerIsTryEntry)
2602+
{
2603+
assert(!bbIsTryBeg(header));
2604+
header->RemoveFlags(BBF_DONT_REMOVE);
2605+
}
25972606
}
25982607
else
25992608
{

0 commit comments

Comments
 (0)