Estado del desarrollo de LFortran

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

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

Pure Fortran sin(x) implementation

t01_sin_implementation.f90

Modules

Basic Usage

Directory: tests/modules/basic

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

Basic modules

t01.f90

Module Functions and Subroutines

Directory: tests/modules/procedures

Descripción

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

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

+,-,*,/,**

basic_operations.f90

Integers

Directory: tests/expressions/integers

Descripción

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

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

single/double reals

real_kind.f90

defined operator

t01_def_op.f90

Complex Numbers

Directory: tests/expressions/complex

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

single/double complex

complex_kind.f90

Strings

Directory: tests/expressions/character

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

character

t01_character.f90

string concatenation

t02_concat_operation.f90

Derived Types

Directory: tests/expressions/derived_type

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

basic derived types

t01_derived_type.f90

Statements

Allocate Statement

Directory: tests/statements/allocate

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

allocate statement

t01.f90

Block Statement

Directory: tests/statements/block

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

block statement

t01.f90

Goto Statement

Directory: tests/statements/goto

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

computed go-to statement

t01.f90

go-to statement

t02.f90

If Statement

Directory: tests/statements/if

Descripción

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

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

Simple while loops

while_01.f90

exit / cycle in while loops

while_02.f90

Open, Read, Write, Close Statement

Directory: tests/statements/file_io

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

open/read/write/close

t01.f90

Intrinsic Functions

abs

Directory: tests/intrinsic/abs

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

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

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90

max

Directory: tests/intrinsic/max

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90

int

Directory: tests/intrinsic/int

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90

real

Directory: tests/intrinsic/real

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90

floor

Directory: tests/intrinsic/floor

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90

nint

Directory: tests/intrinsic/nint

Descripción

AST

ASR

LLVM

BIN

RUN

Filename

scalar single/double real

t01_scalar_real.f90