Move the assert that checks for the end iterator inside the loop which
actually moves over the elements. This allows it to check that the
iteration stays within the range.
);
auto ItBeginRPO = FuncRPOT.begin();
+ auto ItEndRPO = FuncRPOT.end();
// skip until term (TODO RPOT won't let us start at @term directly)
- for (; *ItBeginRPO != &RootBlock; ++ItBeginRPO) {}
-
- auto ItEndRPO = FuncRPOT.end();
- assert(ItBeginRPO != ItEndRPO);
+ for (; *ItBeginRPO != &RootBlock; ++ItBeginRPO) {
+ assert(ItBeginRPO != ItEndRPO && "Unable to find RootBlock");
+ }
// propagate definitions at the immediate successors of the node in RPO
auto ItBlockRPO = ItBeginRPO;