Merge remote-tracking branch 'origin/patch'

This commit is contained in:
Ryan Kurtz 2022-06-10 01:25:36 -04:00
commit 6676667a70
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; 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 /// \b return \b true if block is the target of a jump
bool FlowBlock::isJumpTarget(void) const bool FlowBlock::isJumpTarget(void) const

View File

@ -190,7 +190,7 @@ public:
void setVisitCount(int4 i) { visitcount = i; } ///< Set the number of times this block has been visited void setVisitCount(int4 i) { visitcount = i; } ///< Set the number of times this block has been visited
int4 getVisitCount(void) const { return visitcount; } ///< Get the count of visits int4 getVisitCount(void) const { return visitcount; } ///< Get the count of visits
void setGotoBranch(int4 i); ///< Mark a \e goto branch void setGotoBranch(int4 i); ///< Mark a \e goto branch
void setDefaultSwitch(int4 i) { setOutEdgeFlag(i,f_defaultswitch_edge); } ///< Mark an edge as the switch default void setDefaultSwitch(int4 pos); ///< Mark an edge as the switch default
bool isMark(void) const { return ((flags&f_mark)!=0); } ///< Return \b true if \b this block has been marked bool isMark(void) const { return ((flags&f_mark)!=0); } ///< Return \b true if \b this block has been marked
void setMark(void) { flags |= f_mark; } ///< Mark \b this block void setMark(void) { flags |= f_mark; } ///< Mark \b this block
void clearMark(void) { flags &= ~f_mark; } ///< Clear any mark on \b this block void clearMark(void) { flags &= ~f_mark; } ///< Clear any mark on \b this block