// Test the `error` directive with `at(execution)` inside a target region.
//
// REQUIRES: libc

// RUN: %libomptarget-compile-generic -fopenmp-version=51 && \
// RUN:   %libomptarget-run-generic 2>&1 | %fcheck-generic
// RUN: %libomptarget-compile-generic -fopenmp-version=51 -DFATAL && \
// RUN:   %libomptarget-run-fail-generic

#include <stdio.h>

int main(void) {
#ifdef FATAL
#pragma omp target
  {
#pragma omp error at(execution) severity(fatal) message("fatal message")
  }
  printf("unreachable\n");
#else
#pragma omp target
  {
    // CHECK: {{.*}}error_directive.c:[[# @LINE + 1]]:{{[0-9]+}}: Encountered user-directed warning: warning message.
#pragma omp error at(execution) severity(warning) message("warning message")
  }

  // No MESSAGE clause, so the runtime receives a null message pointer.
#pragma omp target
  {
    // CHECK: {{.*}}error_directive.c:[[# @LINE + 1]]:{{[0-9]+}}: Encountered user-directed warning.
#pragma omp error at(execution) severity(warning)
  }
#endif
  return 0;
}

// Device output is flushed after host output, so host prints are not checked.
// The fatal case checks only the exit status: its message is lost when the trap
// aborts before the buffered stdout is flushed.
//
// clang fills in the ident location from the AST, so it is present without -g
