Currently, IRC contains Begin and Step as SCEVs and End as value.
Aside from that, End can also be nullptr which can be later conditionally
converted into a non-null SCEV.
To make this logic more transparent, this patch makes End a SCEV and
calculates it early, so that it is never a null.