File: associate02.f90

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,998,492 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (78 lines) | stat: -rw-r--r-- 4,038 bytes parent folder | download | duplicates (11)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
! RUN: %flang_fc1 -fdebug-unparse  %s  2>&1 | FileCheck %s
! Sometimes associations with named constants involving non-default
! lower bounds expose those bounds to LBOUND()/UBOUND(), sometimes
! they do not.
subroutine s(n)
  integer, intent(in) :: n
  type t
    real component(0:1,2:3)
  end type
  real, parameter :: abcd(2,2) = reshape([1.,2.,3.,4.], shape(abcd))
  real, parameter :: namedConst1(-1:0,-2:-1) = abcd
  type(t), parameter :: namedConst2 = t(abcd)
  type(t), parameter :: namedConst3(2:3,3:4) = reshape([(namedConst2,j=1,size(namedConst3))], shape(namedConst3))
!CHECK: PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(abcd), ubound(abcd), shape(abcd)
!CHECK: PRINT *, [INTEGER(4)::-1_4,-2_4], [INTEGER(4)::0_4,-1_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(namedConst1), ubound(namedConst1), shape(namedConst1)
!CHECK: PRINT *, [INTEGER(4)::0_4,2_4], [INTEGER(4)::1_4,3_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(namedConst2%component), ubound(namedConst2%component), shape(namedConst2%component)
!CHECK: PRINT *, [INTEGER(4)::2_4,3_4], [INTEGER(4)::3_4,4_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(namedConst3), ubound(namedConst3), shape(namedConst3)
!CHECK: PRINT *, [INTEGER(4)::0_4,2_4], [INTEGER(4)::1_4,3_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(namedConst3(n,n)%component), ubound(namedConst3(n,n)%component), shape(namedConst3(n,n)%component)
!CHECK: PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
  print *, lbound(namedConst3%component(0,2)), ubound(namedConst3%component(0,2)), shape(namedConst3%component(0,2))
  associate (a => abcd)
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst1)
!CHECK:  PRINT *, [INTEGER(4)::-1_4,-2_4], [INTEGER(4)::0_4,-1_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => (namedConst1))
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst1 * 2.)
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst2%component)
!CHECK:  PRINT *, [INTEGER(4)::0_4,2_4], [INTEGER(4)::1_4,3_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => (namedConst2%component))
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst2%component * 2.)
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst3)
!CHECK:  PRINT *, [INTEGER(4)::2_4,3_4], [INTEGER(4)::3_4,4_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => (namedConst3))
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst3(n,n)%component)
!CHECK:  PRINT *, [INTEGER(4)::0_4,2_4], [INTEGER(4)::1_4,3_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => (namedConst3(n,n)%component))
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst3(n,n)%component * 2.)
!CHECK:  PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
  associate (a => namedConst3%component(0,2))
!CHECK: PRINT *, [INTEGER(4)::1_4,1_4], [INTEGER(4)::2_4,2_4], [INTEGER(4)::2_4,2_4]
    print *, lbound(a), ubound(a), shape(a)
  end associate
end