mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 16:06:40 +00:00

`ERF`, `ERFC` and `ERFC_SCALED` intrinsics prefixed by `Q` and `D` are missing. Codes such as `CP2K`(https://github.com/cp2k/cp2k) and `TurboRVB`(https://github.com/sissaschool/turborvb) use these intrinsics just like defined in the GNU standard and here: https://www.ibm.com/docs/fr/xl-fortran-aix/16.1.0?topic=reference-intrinsic-procedures These intrinsics are based on the existing intrinsics but apply a restriction on the type kind. - `DERF`, `DERFC` and `DERFC_SCALED` are for double précision only. - `QERF`, `QERFC` and `QERFC_SCALED` are for quad précision only.
30 lines
1.0 KiB
Fortran
30 lines
1.0 KiB
Fortran
! RUN: not %flang_fc1 -fsyntax-only %s 2>&1 | FileCheck --check-prefix=ERROR %s
|
|
|
|
function derfc_scaled8_error4(x)
|
|
real(kind=8) :: derfc_scaled8_error4
|
|
real(kind=4) :: x
|
|
derfc_scaled8_error4 = derfc_scaled(x);
|
|
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(4)'
|
|
end function derfc_scaled8_error4
|
|
|
|
function derfc_scaled8_error16(x)
|
|
real(kind=8) :: derfc_scaled8_error16
|
|
real(kind=16) :: x
|
|
derfc_scaled8_error16 = derfc_scaled(x);
|
|
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(16)'
|
|
end function derfc_scaled8_error16
|
|
|
|
function qerfc_scaled16_error4(x)
|
|
real(kind=16) :: qerfc_scaled16_error4
|
|
real(kind=4) :: x
|
|
qerfc_scaled16_error4 = qerfc_scaled(x);
|
|
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(4)'
|
|
end function qerfc_scaled16_error4
|
|
|
|
function qerfc_scaled16_error8(x)
|
|
real(kind=16) :: qerfc_scaled16_error8
|
|
real(kind=8) :: x
|
|
qerfc_scaled16_error8 = qerfc_scaled(x);
|
|
! ERROR: Actual argument for 'x=' has bad type or kind 'REAL(8)'
|
|
end function qerfc_scaled16_error8
|