error-1.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* { dg-shouldfail "error directive" } */
  2. #ifdef __cplusplus
  3. extern "C"
  4. #endif
  5. void abort ();
  6. int
  7. foo (int i, int x)
  8. {
  9. if (x)
  10. #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */
  11. i++;
  12. if (!x)
  13. ;
  14. else
  15. #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */
  16. i += 2;
  17. switch (0)
  18. #pragma omp error severity(warning) /* { dg-warning "'pragma omp error' encountered" } */
  19. {
  20. default:
  21. break;
  22. }
  23. while (0)
  24. #pragma omp error message("42 - 1") severity (warning) /* { dg-warning "'pragma omp error' encountered: 42 - 1" } */
  25. i += 4;
  26. lab:
  27. #pragma omp error severity(warning) message("bar") at(compilation) /* { dg-warning "'pragma omp error' encountered: bar" } */
  28. i += 8;
  29. return i;
  30. }
  31. int
  32. main ()
  33. {
  34. /* Initialize offloading early, so that any output this may produce doesn't
  35. disturb the 'dg-output' scanning below. */
  36. #pragma omp target
  37. ;
  38. if (foo (5, 0) != 13 || foo (6, 1) != 17)
  39. abort ();
  40. #pragma omp error at (execution) severity (warning)
  41. const char *msg = "my message" + 2;
  42. #pragma omp error at (execution) severity (warning) message (msg + 1)
  43. #pragma omp target
  44. {
  45. #pragma omp error at (execution) severity (warning) message ("hello from a distance")
  46. }
  47. #pragma omp error at (execution) severity (fatal) message (msg - 2)
  48. #pragma omp error at (execution) severity (warning) message ("foobar")
  49. return 0;
  50. }
  51. /* { dg-output "libgomp: error directive encountered(\n|\r|\r\n)(\n|\r|\r\n)" } */
  52. /* { dg-output "libgomp: error directive encountered: message(\n|\r|\r\n)(\n|\r|\r\n)" } */
  53. /* { dg-output "libgomp: error directive encountered: hello from a distance(\n|\r|\r\n)(\n|\r|\r\n)" } */
  54. /* { dg-output "libgomp: fatal error: error directive encountered: my message" } */