cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
100 lines
2.9 KiB
Fortran
100 lines
2.9 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! Test DO loop semantics for constraint C1130 --
|
|
! The constraint states that "If the locality-spec DEFAULT ( NONE ) appears in a
|
|
! DO CONCURRENT statement; a variable that is a local or construct entity of a
|
|
! scope containing the DO CONCURRENT construct; and that appears in the block of
|
|
! the construct; shall have its locality explicitly specified by that
|
|
! statement."
|
|
|
|
module m
|
|
real :: mvar
|
|
end module m
|
|
|
|
subroutine s1()
|
|
use m
|
|
integer :: i, ivar, jvar, kvar
|
|
real :: x
|
|
|
|
type point
|
|
real :: x, y
|
|
end type point
|
|
|
|
type, extends(point) :: color_point
|
|
integer :: color
|
|
end type color_point
|
|
|
|
type(point), target :: c
|
|
class(point), pointer :: p_or_c
|
|
|
|
p_or_c => c
|
|
|
|
jvar = 5
|
|
|
|
! References in this DO CONCURRENT are OK since there's no DEFAULT(NONE)
|
|
! locality-spec
|
|
associate (avar => ivar)
|
|
do concurrent (i = 1:2) shared(jvar)
|
|
ivar = 3
|
|
ivar = ivar + i
|
|
block
|
|
real :: bvar
|
|
avar = 4
|
|
x = 3.5
|
|
bvar = 3.5 + i
|
|
end block
|
|
jvar = 5
|
|
mvar = 3.5
|
|
end do
|
|
end associate
|
|
|
|
associate (avar => ivar)
|
|
!ERROR: DO CONCURRENT step expression may not be zero
|
|
do concurrent (i = 1:2:0) default(none) shared(jvar) local(kvar)
|
|
!ERROR: Variable 'ivar' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
ivar = &
|
|
!ERROR: Variable 'ivar' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
ivar + i
|
|
block
|
|
real :: bvar
|
|
!ERROR: Variable 'avar' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
avar = 4
|
|
!ERROR: Variable 'x' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
x = 3.5
|
|
bvar = 3.5 + i ! OK, bvar's scope is within the DO CONCURRENT
|
|
end block
|
|
jvar = 5 ! OK, jvar appears in a locality spec
|
|
kvar = 5 ! OK, kvar appears in a locality spec
|
|
|
|
!ERROR: Variable 'mvar' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
mvar = 3.5
|
|
end do
|
|
end associate
|
|
|
|
select type ( a => p_or_c )
|
|
type is ( point )
|
|
do concurrent (i=1:5) local(a)
|
|
! C1130 This is OK because there's no DEFAULT(NONE) locality spec
|
|
a%x = 3.5
|
|
end do
|
|
end select
|
|
|
|
select type ( a => p_or_c )
|
|
type is ( point )
|
|
do concurrent (i=1:5) default (none)
|
|
!ERROR: Variable 'a' from an enclosing scope referenced in DO CONCURRENT with DEFAULT(NONE) must appear in a locality-spec
|
|
a%x = 3.5
|
|
end do
|
|
end select
|
|
|
|
select type ( a => p_or_c )
|
|
type is ( point )
|
|
do concurrent (i=1:5) default (none) local(a)
|
|
! C1130 This is OK because 'a' is in a locality-spec
|
|
a%x = 3.5
|
|
end do
|
|
end select
|
|
|
|
x = 5.0 ! OK, we're not in a DO CONCURRENT
|
|
|
|
end subroutine s1
|