URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
! { dg-do run }
|
! { dg-do run }
|
! PR 17612
|
! PR 17612
|
! We used to not determine the length of character-valued expressions
|
! We used to not determine the length of character-valued expressions
|
! correctly, leading to a segfault.
|
! correctly, leading to a segfault.
|
program prog
|
program prog
|
character(len=2), target :: c(4)
|
character(len=2), target :: c(4)
|
type pseudo_upf
|
type pseudo_upf
|
character(len=2), pointer :: els(:)
|
character(len=2), pointer :: els(:)
|
end type pseudo_upf
|
end type pseudo_upf
|
type (pseudo_upf) :: p
|
type (pseudo_upf) :: p
|
type t
|
type t
|
character(5) :: s(2)
|
character(5) :: s(2)
|
end type
|
end type
|
type (t) v
|
type (t) v
|
! A full arrays.
|
! A full arrays.
|
c = (/"ab","cd","ef","gh"/)
|
c = (/"ab","cd","ef","gh"/)
|
call n(p)
|
call n(p)
|
if (any (c /= p%els)) call abort
|
if (any (c /= p%els)) call abort
|
! An array section that needs a new array descriptor.
|
! An array section that needs a new array descriptor.
|
v%s(1) = "hello"
|
v%s(1) = "hello"
|
v%s(2) = "world"
|
v%s(2) = "world"
|
call test (v%s)
|
call test (v%s)
|
contains
|
contains
|
|
|
subroutine n (upf)
|
subroutine n (upf)
|
type (pseudo_upf), intent(inout) :: upf
|
type (pseudo_upf), intent(inout) :: upf
|
upf%els => c
|
upf%els => c
|
return
|
return
|
end subroutine n
|
end subroutine n
|
|
|
subroutine test(s)
|
subroutine test(s)
|
character(len=*) :: s(:)
|
character(len=*) :: s(:)
|
if ((len (s) .ne. 5) .or. (any (s .ne. (/"hello", "world"/)))) call abort
|
if ((len (s) .ne. 5) .or. (any (s .ne. (/"hello", "world"/)))) call abort
|
end subroutine
|
end subroutine
|
end program
|
end program
|
|
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.