diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp index 0eadc8e8df44371356a6027af1fd296bd498360c..27b6cc7eeab3dc4ff8805fbb52fe17f193557b76 100644 --- a/src/base/SMPFunction.cpp +++ b/src/base/SMPFunction.cpp @@ -6325,9 +6325,16 @@ void SMPFunction::SetLinks(void) { } // Last instruction in block; set successors - bool CallFlag = (CALL == CurrInst->GetDataFlowType()); - bool IndirJumpFlag = (INDIR_JUMP == CurrInst->GetDataFlowType()); - bool IndirCallFlag = (INDIR_CALL == CurrInst->GetDataFlowType()); + SMPitype FlowType = CurrInst->GetDataFlowType(); + if (HALT == FlowType) { + if (DebugFlag) { + SMP_msg("DEBUG: SetLinks not linking successors for HALT block\n"); + } + continue; + } + bool CallFlag = (CALL == FlowType); + bool IndirJumpFlag = (INDIR_JUMP == FlowType); + bool IndirCallFlag = (INDIR_CALL == FlowType); // NOTE: Due to phase re-ordering, we cannot yet identify tail calls, // so CondTailCall and TailCallFlag will always be false, which is harmless. // SMPInstr::SetTailCall() will do a little cleanup later.