Before emitting a warning message, code should check that the usage in question should be diagnosed by calling ShouldWarn(). A fair number of sites in the code do not, and can emit portability warnings unconditionally, which can confuse a user that hasn't asked for them (-pedantic) and isn't terribly concerned about portability *to* other compilers. Add calls to ShouldWarn() or IsEnabled() around messages that need them, and add -pedantic to tests that now require it to test their portability messages, and add more expected message lines to those tests when -pedantic causes other diagnostics to fire.
29 lines
843 B
Fortran
29 lines
843 B
Fortran
! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp -pedantic
|
|
! OpenMP Version 5.1
|
|
! Check OpenMP construct validity for the following directives:
|
|
! 2.21.2 Threadprivate Directive
|
|
|
|
module mod1
|
|
end
|
|
|
|
program main
|
|
use mod1
|
|
integer, parameter :: i = 1
|
|
|
|
!ERROR: The module name or main program name cannot be in a THREADPRIVATE directive
|
|
!$omp threadprivate(mod1)
|
|
|
|
!PORTABILITY: Name 'main' declared in a main program should not have the same name as the main program
|
|
!ERROR: The module name or main program name cannot be in a THREADPRIVATE directive
|
|
!$omp threadprivate(main)
|
|
|
|
!ERROR: The entity with PARAMETER attribute cannot be in a THREADPRIVATE directive
|
|
!$omp threadprivate(i)
|
|
|
|
contains
|
|
subroutine sub()
|
|
!ERROR: The procedure name cannot be in a THREADPRIVATE directive
|
|
!$omp threadprivate(sub)
|
|
end
|
|
end
|