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.