xref: /llvm-project/flang/test/Lower/dummy-arguments.f90 (revision 06f775a82f6f562f8de75053f62c9c0dbeaa67d2)
1f35f863aSjeanPerier! RUN: bbc -hlfir=false %s -o - | FileCheck %s
2baa42c16SValentin Clement
3baa42c16SValentin Clement! CHECK-LABEL: _QQmain
4baa42c16SValentin Clementprogram test1
5baa42c16SValentin Clement  ! CHECK-DAG: %[[TMP:.*]] = fir.alloca
6baa42c16SValentin Clement  ! CHECK-DAG: %[[TEN:.*]] = arith.constant
7baa42c16SValentin Clement  ! CHECK: fir.store %[[TEN]] to %[[TMP]]
8baa42c16SValentin Clement  ! CHECK-NEXT: fir.call @_QFPfoo
9baa42c16SValentin Clement  call foo(10)
10baa42c16SValentin Clementcontains
11baa42c16SValentin Clement
12*06f775a8SjeanPerier! CHECK-LABEL: func private @_QFPfoo
13baa42c16SValentin Clementsubroutine foo(avar1)
14baa42c16SValentin Clement  integer :: avar1
15baa42c16SValentin Clement!  integer :: my_data, my_data2
16baa42c16SValentin Clement!  DATA my_data / 150 /
17baa42c16SValentin Clement!  DATA my_data2 / 150 /
18baa42c16SValentin Clement!  print *, my_data, my_data2
19baa42c16SValentin Clement  print *, avar1
20baa42c16SValentin Clementend subroutine
21baa42c16SValentin Clement! CHECK: }
22baa42c16SValentin Clementend program test1
23baa42c16SValentin Clement
24baa42c16SValentin Clement! CHECK-LABEL: func @_QPsub2
25baa42c16SValentin Clementfunction sub2(r)
26baa42c16SValentin Clement  real :: r(20)
27baa42c16SValentin Clement  ! CHECK: %[[coor:.*]] = fir.coordinate_of %arg0
284cc9437aSTom Eccles  ! CHECK: = fir.call @_QPf(%[[coor]]) {{.*}}: (!fir.ref<f32>) -> f32
29baa42c16SValentin Clement  sub2 = f(r(1))
30baa42c16SValentin Clement  ! CHECK: return %{{.*}} : f32
31baa42c16SValentin Clementend function sub2
32baa42c16SValentin Clement
33baa42c16SValentin Clement! Test TARGET attribute lowering
34baa42c16SValentin Clement! CHECK-LABEL: func @_QPtest_target(
35baa42c16SValentin Clement! CHECK-SAME: !fir.ref<i32> {fir.bindc_name = "i", fir.target},
36baa42c16SValentin Clement! CHECK-SAME: !fir.box<!fir.array<?xf32>> {fir.bindc_name = "x", fir.target})
37baa42c16SValentin Clementsubroutine test_target(i, x)
38baa42c16SValentin Clement  integer, target :: i
39baa42c16SValentin Clement  real, target :: x(:)
40baa42c16SValentin Clement  print *, xs, xa
41baa42c16SValentin Clementend subroutine
42