blob: 2c3ceefd001bc99eb819b2de0d7029a6b247197b [file] [edit]
// RUN: %libomp-compile -fopenmp-version=60 && %libomp-run \
// RUN: | FileCheck %s --match-full-lines
// tile restores the variables of a reverse it consumes, and leaves an inner
// one untouched when the enclosing loop has no iterations.
#ifndef HEADER
#define HEADER
#include <stdio.h>
#include <stdlib.h>
static void test_tile_reverse(void) {
int i = -1;
#pragma omp tile sizes(2)
#pragma omp reverse
for (i = 0; i < 5; i++)
;
printf("tile_reverse: i=%d\n", i);
}
static void test_tile_nested_reverse(int n) {
int i = 77, j = 111;
#pragma omp tile sizes(2, 3)
for (i = 0; i < n; i++)
#pragma omp reverse
for (j = 0; j < 5; j++)
;
printf("tile_nested_reverse n=%d: i=%d j=%d\n", n, i, j);
}
int main(void) {
test_tile_reverse();
test_tile_nested_reverse(4);
test_tile_nested_reverse(0);
return EXIT_SUCCESS;
}
#endif
// CHECK: tile_reverse: i=5
// CHECK-NEXT: tile_nested_reverse n=4: i=4 j=5
// CHECK-NEXT: tile_nested_reverse n=0: i=0 j=111