llvm-project/polly/test/ScopDetectionDiagnostics
Tobias Grosser 349d1c3368 [ScopDetection] Remove redundant checks for endless loops
Summary:
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.

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.

Reviewers: Meinersbur, grosser

Subscribers: _jdoerfert, pollydev

Differential Revision: https://reviews.llvm.org/D24560

Contributed-by: Matthias Reisinger <d412vv1n@gmail.com>
llvm-svn: 281987
2016-09-20 17:05:22 +00:00
..
ReportAlias-01.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportFuncCall-01.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportIrreducibleRegion.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportLoopBound-01.ll Cleanup rejection log handling [NFC] 2016-05-12 18:50:01 +00:00
ReportLoopHasNoExit.ll [ScopDetection] Remove redundant checks for endless loops 2016-09-20 17:05:22 +00:00
ReportMultipleNonAffineAccesses.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportNonAffineAccess-01.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportUnprofitable.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00
ReportVariantBasePtr-01.ll Update debug metadata after LLVM commits r266445+r266446 2016-04-15 20:51:27 +00:00