hanchenye-llvm-project/polly/lib/Analysis
Tobias Grosser 5e6813d184 Derive run-time conditions for delinearization
As our delinearization works optimistically, we need in some cases run-time
checks that verify our optimistic assumptions. A simple example is the
following code:

void foo(long n, long m, long o, double A[n][m][o]) {

  for (long i = 0; i < 100; i++)
    for (long j = 0; j < 150; j++)
      for (long k = 0; k < 200; k++)
        A[i][j][k] = 1.0;
}

After clang linearized the access to A and we delinearized it again to
A[i][j][k] we need to ensure that we do not access the delinearized array
out of bounds (this information is not available in LLVM-IR). Hence, we
need to verify the following constraints at run-time:

CHECK:   Assumed Context:
CHECK:   [o, m] -> {  : m >= 150 and o >= 200 }
llvm-svn: 212198
2014-07-02 17:47:48 +00:00
..
Dependences.cpp Allow multiple reductions per statement 2014-06-27 20:31:28 +00:00
ScopDetection.cpp Don't expand to invalid Scops with -polly-detect-keep-going 2014-06-27 06:21:14 +00:00
ScopDetectionDiagnostic.cpp Add diagnostic remark for ReportVariantBasePtr 2014-06-26 13:33:35 +00:00
ScopGraphPrinter.cpp [C++11] Use more range based fors 2014-06-28 08:59:45 +00:00
ScopInfo.cpp Derive run-time conditions for delinearization 2014-07-02 17:47:48 +00:00
ScopPass.cpp
TempScopInfo.cpp record delinearization result and reuse it in polyhedral translation 2014-06-03 18:16:31 +00:00