// RUN: %libomp-compile && env OMP_CANCELLATION=true %libomp-run
// Clang had a bug until version 4.0.1 which resulted in a hang.
// UNSUPPORTED: clang-3, clang-4.0.0

// Regression test for a bug in cancellation to cover effect of `#pragma omp cancel`
// in a loop construct, on sections construct.
// Pass condition: Cancellation status from `for` does not persist
// to `sections`.

#include <stdio.h>
#include <omp.h>

int result[2] = {0, 0};

void cq416850_for_sections() {

    unsigned i;
     // 1) loop
    #pragma omp for
    for (i = 0; i < 1; i++) {
        result[0] = 1;
        #pragma omp cancel for
        result[0] = 2;
    }

//        printf("thread %d: result[0] = %d, result[1] = %d \n",  omp_get_thread_num(), result[0], result[1]);


    // 2) sections
    #pragma omp sections
    {
        #pragma omp section
        {
            result[1] = 1;
            #pragma omp cancellation point sections
            result[1] = 2;
        }
    }
}

int main(void) {
    if(!omp_get_cancellation()) {
        printf("Cancellation not enabled!\n");
        return 2;
    }

    #pragma omp parallel num_threads(4)
    {
        cq416850_for_sections();
    }

    if (result[0] != 1 || result[1] != 2) {
        printf("Incorrect values. "
               "result[0] = %d (expected 1), "
               "result[1] = %d (expected 2).\n",
               result[0], result[1]);
        printf("FAILED\n");
        return 1;
    }

    printf("PASSED\n");
    return 0;
}
