aboutsummaryrefslogtreecommitdiff
path: root/flang/test/Semantics/cuf03.cuf
blob: 7384a104831d8dba00ba15c6843b123b34fe1e32 (plain)
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
! RUN: %python %S/test_errors.py %s %flang_fc1
! Exercise CUDA data attribute checks
module m
  real, constant :: mc ! ok
  real, constant :: mci = 1. ! ok
  !ERROR: Object 'mcl' with ATTRIBUTES(CONSTANT) may not be allocatable, pointer, or target
  real, constant, allocatable :: mcl
  !ERROR: Object 'mcp' with ATTRIBUTES(CONSTANT) may not be allocatable, pointer, or target
  real, constant, pointer :: mcp
  !ERROR: Object 'mct' with ATTRIBUTES(CONSTANT) may not be allocatable, pointer, or target
  real, constant, target :: mct
  real, device :: md ! ok
  real, device :: mdi = 1.
  real, device, allocatable :: mdl ! ok
  real, device, pointer :: mdp ! ok at module level
  real, device, target :: mdt ! ok
  !ERROR: Object 'ms' with ATTRIBUTES(SHARED) must be declared in a device subprogram
  real, shared :: ms
  !ERROR: Object 'msi' with ATTRIBUTES(SHARED) must be declared in a device subprogram
  real, shared :: msi = 1.
  !ERROR: Object 'msl' with ATTRIBUTES(SHARED) may not be allocatable, pointer, or target
  real, shared, allocatable :: msl
  !ERROR: Object 'msp' with ATTRIBUTES(SHARED) may not be allocatable, pointer, or target
  real, shared, pointer :: msp
  !ERROR: Object 'mst' with ATTRIBUTES(SHARED) may not be allocatable, pointer, or target
  real, shared, target :: mst
  !ERROR: Object 'msa' with ATTRIBUTES(SHARED) must be declared in a device subprogram
  real, shared :: msa(*)
  !ERROR: Object 'mm' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, or a dummy argument
  real, managed :: mm
  !ERROR: Object 'mmi' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, or a dummy argument
  real, managed :: mmi = 1.
  real, managed, allocatable :: mml ! ok
  !ERROR: Object 'mmp' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, or a dummy argument
  real, managed, pointer :: mmp ! ok
  !ERROR: Object 'mmt' with ATTRIBUTES(MANAGED) must also be allocatable, automatic, or a dummy argument
  real, managed, target :: mmt
  !WARNING: Object 'mp' with ATTRIBUTES(PINNED) should also be allocatable
  real, pinned :: mp
  !WARNING: Object 'mpi' with ATTRIBUTES(PINNED) should also be allocatable
  real, pinned :: mpi = 1.
  real, pinned, allocatable :: mpl ! ok
  !ERROR: Object 'mpp' with ATTRIBUTES(PINNED) may not be a pointer
  real, pinned, pointer :: mpp
  !WARNING: Object 'mpt' with ATTRIBUTES(PINNED) should also be allocatable
  real, pinned, target :: mpt ! ok
  !ERROR: ATTRIBUTES(TEXTURE) is obsolete and no longer supported
  real, texture, pointer :: mt
  !ERROR: 'bigint' has intrinsic type 'INTEGER(16)' that is not available on the device
  integer(16), device :: bigint
 contains
  attributes(device) subroutine devsubr(n,da)
    integer, intent(in) :: n
    !ERROR: Object 'da' with ATTRIBUTES(DEVICE) may not be assumed size
    real, device :: da(*)
    real, managed :: ma(n) ! ok
    !WARNING: Pointer 'dp' may not be associated in a device subprogram
    real, device, pointer :: dp
    real, constant :: rc ! ok
  end subroutine

  subroutine host()
    !ERROR: Object 'rc' with ATTRIBUTES(CONSTANT) may not be declared in a host subprogram
    real, constant :: rc
  end subroutine

  attributes(global) subroutine devsubr2()
    real, shared :: rs

    rs = 1 ! ok
  end subroutine

end module