3 ! PR fortran/67277 - ISHFTC and missing optional argument SIZE
8 ! Optional argument passed by reference
9 elemental
function ishftc4_ref (i
, shift
, size_
) result(r
)
10 integer(4), intent(in
) :: i
11 integer, intent(in
) :: shift
12 integer, intent(in
), optional
:: size_
14 r
= ishftc (i
, shift
=shift
, size
=size_
)
17 elemental
function ishftc1_ref (i
, shift
, size_
) result(r
)
18 integer(1), intent(in
) :: i
19 integer, intent(in
) :: shift
20 integer(1), intent(in
), optional
:: size_
22 r
= ishftc (i
, shift
=shift
, size
=size_
)
25 ! Array valued argument i
26 function ishftc4_ref_4 (i
, shift
, size_
) result(r
)
27 integer(4), intent(in
) :: i(4)
28 integer, intent(in
) :: shift
29 integer, intent(in
), optional
:: size_
31 r
= ishftc (i
, shift
=shift
, size
=size_
)
34 ! Optional argument passed by value
35 elemental
function ishftc4_val (i
, shift
, size_
) result(r
)
36 integer(4), intent(in
) :: i
37 integer, intent(in
) :: shift
38 integer, value
, optional
:: size_
40 r
= ishftc (i
, shift
=shift
, size
=size_
)
43 elemental
function ishftc1_val (i
, shift
, size_
) result(r
)
44 integer(1), intent(in
) :: i
45 integer, intent(in
) :: shift
46 integer(1), value
, optional
:: size_
48 r
= ishftc (i
, shift
=shift
, size
=size_
)
51 ! Array valued argument i
52 function ishftc4_val_4 (i
, shift
, size_
) result(r
)
53 integer(4), intent(in
) :: i(4)
54 integer, intent(in
) :: shift
55 integer, value
, optional
:: size_
57 r
= ishftc (i
, shift
=shift
, size
=size_
)
65 integer(4) :: i4
= 127, j4(4), k4(4)
66 integer(1) :: i1
= 127
72 if (ishftc (i4
, shift
) /= expect4
) stop 1
73 if (ishftc4_ref (i4
, shift
) /= expect4
) stop 2
74 if (ishftc4_val (i4
, shift
) /= expect4
) stop 3
77 if (ishftc (i1
, shift
) /= expect1
) stop 4
78 if (ishftc1_ref (i1
, shift
) /= expect1
) stop 5
79 if (ishftc1_val (i1
, shift
) /= expect1
) stop 6
84 k4
= ishftc (j4
, shift
)
85 if (any (k4
/= expect4
)) stop 7
87 ! The following works on x86_64 but might currently fail on other systems:
89 ! k4 = ishftc4_val_4 (j4, shift)
90 ! if (any (k4 /= expect4)) stop 8
92 ! The following currently segfaults (might be a scalarizer issue):
94 ! k4 = ishftc4_ref_4 (j4, shift)
96 ! if (any (k4 /= expect4)) stop 9