/* { dg-shouldfail "error directive" } */ #ifdef __cplusplus extern "C" #endif void abort (); int foo (int i, int x) { if (x) #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */ i++; if (!x) ; else #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */ i += 2; switch (0) #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */ { default: break; } while (0) #pragma omp error message("42 - 1") severity (warning) /* { dg-warning "'pragma omp error' encountered: 42 - 1" } */ i += 4; lab: #pragma omp error severity(warning) message("bar") at(compilation) /* { dg-warning "'pragma omp error' encountered: bar" } */ i += 8; return i; } int main () { /* Initialize offloading early, so that any output this may produce doesn't disturb the 'dg-output' scanning below. */ #pragma omp target ; if (foo (5, 0) != 13 || foo (6, 1) != 17) abort (); #pragma omp error at (execution) severity (warning) const char *msg = "my message" + 2; #pragma omp error at (execution) severity (warning) message (msg + 1) #pragma omp target { #pragma omp error at (execution) severity (warning) message ("hello from a distance") } #pragma omp error at (execution) severity (fatal) message (msg - 2) #pragma omp error at (execution) severity (warning) message ("foobar") return 0; } /* { dg-output "libgomp: error directive encountered(\n|\r|\r\n)(\n|\r|\r\n)" } */ /* { dg-output "libgomp: error directive encountered: message(\n|\r|\r\n)(\n|\r|\r\n)" } */ /* { dg-output "libgomp: error directive encountered: hello from a distance(\n|\r|\r\n)(\n|\r|\r\n)" } */ /* { dg-output "libgomp: fatal error: error directive encountered: my message" } */