gfortran: Runtime library status

Contents

IO Library
Intrinsic functions and subroutines

IO Library Status

Some formatted IO of integers. The current implementation will silently ignore many IO commands.

The library is not thread-safe. This will have to be fixed because OpenMP allows threaded IO.

TODO: Figure out what the IO library can really do

Intrinsic functions and subroutines

Some intrinsics map directly to library functions, and in most cases the name of the library function used depends on the type of the arguments. For some intrinsics we generate inline code, and for others, such as sin, cos and sqrt, we rely on the backend to use special instructions in the floating point unit of the CPU if available, or to fall back to a call to libm if not.

Implementation of some non-elemental intrinsic functions (eg. DOT_PRODUCT, AVERAGE) is not yet optimal. This is hard because we have to make decisions whether to use inline code (good for small arrays as no function call overhead occurs) or generate function calls (good for large arrays as it allows use of hand-optimized assembly routines, SIMD instructions, etc.)

Implementations marked * are performed by the frontend, and are never seen by the code generation routines. Other calls may also be eliminated if their value is known at compile time. Intrinsics marked ** are implemented by means of inline code. There is no code for these in the library.

NameStatusTestsuite
ABSImplementedYES
ACHARImplementedNO
ACOSImplementedYES
ADJUSTLImplementedNO
ADJUSTRImplementedNO
AIMAGImplementedYES
AINTImplementedYES
ALLImplementedYES
ALLOCATEDImplemented**NO
ANINTImplementedYES
ANYImplementedYES
ASINImplementedYES
ASSOCIATEDImplementedYES
ATANImplementedYES
ATAN2ImplementedYES
BIT_SIZEImplemented*NO
BTESTImplementedYES
CEILINGImplementedYES
CHARASCII onlyNO
CMPLXImplementedYES
CONJGImplementedYES
COSImplementedYES
COSHImplementedYES
COUNTImplementedYES
CPU_TIMEImplementedNO
CSHIFTNot implementedNO
DATE_AND_TIMEImplementedNO
DBLEImplementedNO
DIGITSImplemented*NO
DIMImplementedYES
DOT_PRODUCTImplementedYES
DPRODImplementedYES
EOSHIFTImplementedYES
EPSILONImplemented*NO
EXPImplementedYES
EXPONENTImplementedYES
FLOORImplementedYES
FRACTIONImplementedYES
HUGEImplemented*NO
IACHARImplementedNO
IANDImplementedYES
IBCLRImplementedYES
IBITSImplementedYES
IBSETImplementedYES
ICHARASCII onlyNO
IEORImplementedYES
INDEXImplementedNO
INTImplementedYES
IORImplementedYES
ISHFTImplementedYES
ISHFTCImplementedYES
KINDImplemented*NO
LBOUNDImplementedNO
LENImplementedNO
LEN_TRIMASCII onlyNO
LGEASCII onlyNO
LGTASCII onlyNO
LLEASCII onlyNO
LLTASCII onlyNO
LOGImplementedYES
LOG10ImplementedYES
LOGICALImplementedNO
MATMULImplementedYES
MAXImplementedYES
MAXEXPONENTImplemented*NO
MAXVALImplementedYES
MAXLOCImplementedYES
MERGEImplementedYES
MINImplementedYES
MINEXPONENTImplemented*NO
MINLOCImplementedYES
MINVALImplementedYES
MODImplementedYES
MODULOImplementedYES
MVBITSNot implementedNO
NEARESTImplementedYES
NINTImplementedYES
NOTImplementedYES
NULLImplementedNO
PACKImplementedYES
PRECISIONImplemented*NO
PRESENTImplementedYES
PRODUCTImplementedYES
RADIXImplemented*NO
RANDOM_NUMBERNot implementedNO
RANDOM_SEEDNot implementedNO
RANGEImplemented*NO
REALImplementedNO
REPEATNot implementedNO
RESHAPEImplementedNO
RRSPACINGNot implementedNO
SCALEImplementedYES
SCANNot implementedNO
SELECTED_INT_KINDImplementedYES
SELECTED_REAL_KINDImplementedYES
SET_EXPONENTImplementedYES
SHAPEImplementedYES
SIGNImplementedYES
SINImplementedYES
SINHImplementedYES
SIZEImplementedYES
SPACINGImplementedYES
SPREADImplementedYES
SQRTImplementedYES
SUMImplementedYES
SYSTEM_CLOCKImplementedNO
TANImplementedNO
TANHImplementedNO
TINYImplemented*NO
TRANSFERNot implementedNO
TRANSPOSEImplementedYES
TRIMNot implementedNO
UBOUNDImplementedNO
UNPACKImplementedYES
VERIFYNot implementedNO