Files
RedBear-OS/local/recipes/dev/libclc/source/flang/test/Semantics/dosemantics05.f90
T
vasilito cb424d7448 build: static patch-sanity linter (shift-left the malformed-patch class)
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).
2026-08-01 05:13:02 +03:00

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