| /* { 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" } */ |