Both canUseISLTripCount() and addOverApproximatedRegion() contained checks
to reject endless loops which are now removed and replaced by a single check
in isValidLoop().
For reporting such loops the ReportLoopOverlapWithNonAffineSubRegion is
renamed to ReportLoopHasNoExit. The test case
ReportLoopOverlapWithNonAffineSubRegion.ll is adapted and renamed as well.
Background
The schedule generation in buildSchedule() is based on the following
assumption:
Given some block B that is contained in a loop L and a SESE region R,
we assume that L is contained in R or the other way around.
However, this assumption is broken in the presence of endless loops that are
nested inside other loops. Therefore, in order to prevent erroneous behavior
in buildSchedule(), r265280 introduced a corresponding check in
canUseISLTripCount() to reject endless loops. Unfortunately, it was possible
to bypass this check with -polly-allow-nonaffine-loops which was fixed by adding
another check to reject endless loops in allowOverApproximatedRegion() in
r273905. Hence there existed two separate locations that handled this case.
Thank you Johannes Doerfert for helping to provide the above background
information.