File: allocate_with_source_9.f08

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (29 lines) | stat: -rw-r--r-- 633 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
! { dg-do run }
!
! Contributed by Thomas Koenig  <tkoenig@gcc.gnu.org>,
!                Andre Vehreschild  <vehre@gcc.gnu.org>

program main

  type T
     integer, allocatable :: acc(:)
  end type

  integer :: n, lb, ub
  integer :: vec(9)
  type(T) :: o1, o2
  vec = [(i, i= 1, 9)]
  n = 42
  lb = 7
  ub = lb + 2
  allocate(o1%acc, source=vec)
  allocate(o2%acc, source=o1%acc(lb:ub))
  if (any (o2%acc /= [7, 8, 9])) STOP 1
  block
    real, dimension(0:n) :: a
    real, dimension(:), allocatable :: c
    call random_number(a)
    allocate(c,source=a(:))
    if (any (abs(a - c) > 1E-6)) STOP 2
  end block
end program main