Skip to content

Latest commit

 

History

History
415 lines (253 loc) · 21.4 KB

File metadata and controls

415 lines (253 loc) · 21.4 KB

LFortran Development Status

This page documents what Fortran features are supported by LFortran. For each feature we list a short description, the filename with the test and current status for each parts of the compiler:

  • AST: The code can be parsed to AST (lfortran --show-ast test.f90)
  • ASR: The code can be transformed to ASR (lfortran --show-asr test.f90)
  • LLVM: LFortran can generate LLVM IR (lfortran --show-llvm test.f90)
  • BIN: The LLVM IR can compile to a binary
  • RUN: The binary runs without errors

If all are green it means the feature fully works and you can use it in your codes. Otherwise you can see what the status is of each feature.

This page is generated automatically using the Compiler Tester repository which contains all the Fortran tests and scripts to run LFortran to produce the tables below. We are looking for contributors to contribute more tests. Our goal is to have a comprehensive Fortran testsuite that can be used to test any Fortran compiler.

Testing the LFortran compiler version:

$ lfortran --version
LFortran version: 0.12.0-491-gaf48ff273
Platform: macOS
Default target: x86_64-apple-darwin20.3.0

Topics

Full programs that compute something interesting

Basic Numerics

Directory: tests/programs/numerics

Description AST ASR LLVM BIN RUN Filename
Pure Fortran sin(x) implementation t01_sin_implementation.f90

Modules

Basic Usage

Directory: tests/modules/basic

Description AST ASR LLVM BIN RUN Filename
Basic modules t01.f90

Module Functions and Subroutines

Directory: tests/modules/procedures

Description AST ASR LLVM BIN RUN Filename
Module functions t01.f90
Module subroutines t02.f90
Nested subroutines t03.f90

Expressions

Arithmetic Operations

Directory: tests/expressions/arit

Description AST ASR LLVM BIN RUN Filename
+,-,*,/,** basic_operations.f90

Integers

Directory: tests/expressions/integers

Description AST ASR LLVM BIN RUN Filename
integers integer_kind.f90
relational operations t01_rel_operations.f90
logical operations t02_logical_operations.f90

Real Numbers

Directory: tests/expressions/reals

Description AST ASR LLVM BIN RUN Filename
single/double reals real_kind.f90
defined operator t01_def_op.f90

Complex Numbers

Directory: tests/expressions/complex

Description AST ASR LLVM BIN RUN Filename
single/double complex complex_kind.f90

Strings

Directory: tests/expressions/character

Description AST ASR LLVM BIN RUN Filename
character t01_character.f90
string concatenation t02_concat_operation.f90

Derived Types

Directory: tests/expressions/derived_type

Description AST ASR LLVM BIN RUN Filename
basic derived types t01_derived_type.f90

Statements

Allocate Statement

Directory: tests/statements/allocate

Description AST ASR LLVM BIN RUN Filename
allocate statement t01.f90

Block Statement

Directory: tests/statements/block

Description AST ASR LLVM BIN RUN Filename
block statement t01.f90

Goto Statement

Directory: tests/statements/goto

Description AST ASR LLVM BIN RUN Filename
computed go-to statement t01.f90
go-to statement t02.f90

If Statement

Directory: tests/statements/if

Description AST ASR LLVM BIN RUN Filename
Test .false. if_01.f90
single line if statement if_02.f90
multi line if statement if_03.f90
nested if statements if_04.f90

While Statement

Directory: tests/statements/while

Description AST ASR LLVM BIN RUN Filename
Simple while loops while_01.f90
exit / cycle in while loops while_02.f90

Print Statement

Directory: tests/statements/print

Description AST ASR LLVM BIN RUN Filename
Basic print t01.f90

Open, Read, Write, Close Statement

Directory: tests/statements/file_io

Description AST ASR LLVM BIN RUN Filename
open/read/write/close t01.f90

Intrinsic Functions

abs

Directory: tests/intrinsic/abs

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

exp

Directory: tests/intrinsic/exp

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

log

Directory: tests/intrinsic/log

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

sqrt

Directory: tests/intrinsic/sqrt

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

sin

Directory: tests/intrinsic/sin

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

cos

Directory: tests/intrinsic/cos

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

tan

Directory: tests/intrinsic/tan

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

sinh

Directory: tests/intrinsic/sinh

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

cosh

Directory: tests/intrinsic/cosh

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

tanh

Directory: tests/intrinsic/tanh

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

asin

Directory: tests/intrinsic/asin

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

acos

Directory: tests/intrinsic/acos

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

atan

Directory: tests/intrinsic/atan

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
scalar single/double complex t02_scalar_complex.f90
array 1D single/double real t03_array1d_real.f90

modulo

Directory: tests/intrinsic/modulo

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
array 1D single/double real t03_array1d_real.f90

mod

Directory: tests/intrinsic/mod

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90
array 1D single/double real t03_array1d_real.f90

min

Directory: tests/intrinsic/min

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90

max

Directory: tests/intrinsic/max

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90

int

Directory: tests/intrinsic/int

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90

real

Directory: tests/intrinsic/real

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90

floor

Directory: tests/intrinsic/floor

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90

nint

Directory: tests/intrinsic/nint

Description AST ASR LLVM BIN RUN Filename
scalar single/double real t01_scalar_real.f90