GP-2082 Guarantee only a single switch edge is labeled default

This commit is contained in:
caheckman 2022-05-31 20:32:35 -04:00
parent f5a5bbf7fc
commit 987b524193
2 changed files with 13 additions and 1 deletions

View file

@ -301,6 +301,18 @@ void FlowBlock::setGotoBranch(int4 i)
outofthis[i].point->flags |= f_interior_gotoin;
}
/// The switch can have exactly 1 default edge, so we make sure other edges are not marked.
/// \param pos is the index of the \e out edge that should be the default
void FlowBlock::setDefaultSwitch(int4 pos)
{
for(int4 i=0;i<outofthis.size();++i) {
if (isDefaultBranch(i))
clearOutEdgeFlag(i, f_defaultswitch_edge); // Clear any previous flag
}
setOutEdgeFlag(pos,f_defaultswitch_edge);
}
/// \b return \b true if block is the target of a jump
bool FlowBlock::isJumpTarget(void) const