! { dg-shouldfail "error directive" } module m implicit none (external, type) contains integer function foo (i, x) integer, value :: i, x if (x /= 0) then !$omp error severity(warning) ! { dg-warning ".OMP ERROR encountered at .1." } i = i + 1 end if if (x /= 0) then ! ... else !$omp error severity(warning) ! { dg-warning ".OMP ERROR encountered at .1." } i = i + 2 end if select case(0) !$omp error severity(warning) ! { dg-warning ".OMP ERROR encountered at .1." } case default ! end select do while (.false.) !$omp error message("42 - 1") severity (warning) ! { dg-warning ".OMP ERROR encountered at .1.: 42 - 1" } i = i + 4 end do 99 continue !$omp error severity(warning) message("bar") at(compilation) ! { dg-warning ".OMP ERROR encountered at .1.: bar" } i = i + 8 foo = i end function end module program main use m implicit none (external, type) character(len=13) :: msg character(len=:), allocatable :: msg2, msg3 ! Initialize offloading early, so that any output this may produce doesn't ! disturb the 'dg-output' scanning below. !$omp target !$omp end target msg = "my message" if (foo (5, 0) /= 15 .or. foo (7, 1) /= 16) & stop 1 msg2 = "Paris" msg3 = "To thine own self be true" call bar ("Polonius", "Laertes", msg2, msg3) msg2 = "Hello World" !$omp error at (execution) severity (warning) !$omp error at (execution) severity (warning) message(trim(msg(4:))) !$omp error at (execution) severity (warning) message ("Farewell") !$omp target !$omp error at (execution) severity (warning) message ("ffrom a distanceee"(2:16)) !$omp end target !$omp error at (execution) severity (warning) message (msg2) !$omp error at (execution) severity (warning) message (msg(4:6)) !$omp error at (execution) severity (fatal) message (msg) ! unreachable due to 'fatal'---------^ !$omp error at (execution) severity (warning) message ("foobar") contains subroutine bar(x, y, a, b) character(len=*) :: x, y character(len=:), allocatable :: a, b optional :: y, b intent(in) :: x, y, a, b !$omp error at (execution) severity (warning) message (x) !$omp error at (execution) severity (warning) message (y) !$omp error at (execution) severity (warning) message (a) !$omp error at (execution) severity (warning) message (b) end subroutine end ! { dg-output "(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: Polonius(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: Laertes(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: Paris(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: To thine own self be true(\n|\r|\r\n)(\n|\r|\r\n)" } ! { 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: Farewell(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: from a distance(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: Hello World(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: error directive encountered: mes(\n|\r|\r\n)(\n|\r|\r\n)" } ! { dg-output "libgomp: fatal error: error directive encountered: my message (\n|\r|\r\n)" }