Files
clang-p2996/polly/lib/External/isl/test_inputs/codegen/separation_class4.c
Tobias Grosser 07b2095234 Update isl to isl-0.17.1-57-g1879898
With this update the isl AST generation extracts disjunctive constraints early
on. As a result, code that previously resulted in two branches with (close-to)
identical code within them:

  if (P <= -1) {
    for (int c0 = 0; c0 < N; c0 += 1)
      Stmt_store(c0);
  } else if (P >= 1)
    for (int c0 = 0; c0 < N; c0 += 1)
       Stmt_store(c0);

results now in only a single branch body:

  if (P <= -1 || P >= 1)
    for (int c0 = 0; c0 < N; c0 += 1)
       Stmt_store(c0);

This resolves http://llvm.org/PR27559

Besides the above change, this isl update brings better simplification of
sets/maps containing existentially quantified dimensions and fixes a bug in
isl's coalescing.

llvm-svn: 272500
2016-06-12 04:30:40 +00:00

23 lines
946 B
C

for (int c0 = 0; c0 <= 128; c0 += 1) {
if (c0 <= 127) {
if (c0 == 0) {
for (int c3 = 0; c3 <= 1; c3 += 1)
for (int c5 = c3 + 58; c5 <= -c3 + 61; c5 += 1)
S_0(c3, c5);
} else {
for (int c2 = 1; c2 <= 2; c2 += 1)
for (int c3 = max(4 * c0 - 2, 4 * c0 + 6 * c2 - 12); c3 <= min(4 * c0 + 1, 4 * c0 + 6 * c2 - 7); c3 += 1)
for (int c5 = max(4 * c0 - c3 + 57, -4 * c0 + c3 + 58); c5 <= min(4 * c0 - c3 + 61, -4 * c0 + c3 + 62); c5 += 1)
S_0(c3, c5);
}
for (int c2 = 1; c2 <= 2; c2 += 1)
for (int c3 = max(4 * c0, 4 * c0 + 6 * c2 - 10); c3 <= min(4 * c0 + 3, 4 * c0 + 6 * c2 - 5); c3 += 1)
for (int c5 = max(-4 * c0 + c3 + 59, 4 * c0 - c3 + 62); c5 <= min(-4 * c0 + c3 + 63, 4 * c0 - c3 + 66); c5 += 1)
S_0(c3, c5);
} else {
for (int c3 = 510; c3 <= 511; c3 += 1)
for (int c5 = -c3 + 569; c5 < c3 - 449; c5 += 1)
S_0(c3, c5);
}
}