Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
f1c4b97
enh: check type-inheritance as part of type-checking for `ASR::Struct…
kmr-srbh Aug 6, 2025
6f555c6
tests: update error reference
kmr-srbh Aug 6, 2025
dc3623c
chore: Change name of cpu_impl.h to cuda_cpu_runtime
adit4443ya Aug 7, 2025
41b4c41
TEST: Add
adit4443ya Aug 7, 2025
e4e55af
TEST: Register
adit4443ya Aug 7, 2025
a594642
FEAT: Generate ASR for TEAMS DISTRIBUTE combined construct
adit4443ya Aug 7, 2025
f364bbc
FEAT: Implement TeamsDistribute combined construct
adit4443ya Aug 7, 2025
df408cd
TEST: updaate Refs
adit4443ya Aug 7, 2025
bf57937
fix: store data member types in same order as declared
jinangshah21 Aug 7, 2025
bbf5b87
fix: correct logic in handling `FunctionCall` and `OverloadedStringCo…
kmr-srbh Aug 7, 2025
8cd3509
fix: check if arg_expr is non-null
HarshitaKalani Aug 7, 2025
74a0dd7
test: add and register test
HarshitaKalani Aug 7, 2025
76ca8b5
Merge pull request #8275 from HarshitaKalani/legacy_02
Pranavchiku Aug 7, 2025
19ceac2
fix: correctly create function call to class procedure
jinangshah21 Aug 7, 2025
bef1591
tests: add test and update reference tests
jinangshah21 Aug 7, 2025
9856e1d
Union ASR refactor (#7966)
swamishiju Aug 7, 2025
58eb158
Merge pull request #8269 from kmr-srbh/type-inheritance-in-type-checking
certik Aug 7, 2025
24af955
Merge pull request #8273 from jinangshah21/fpm5
certik Aug 7, 2025
003b513
Merge pull request #8272 from adit4443ya/chore
certik Aug 7, 2025
6bf4d3b
Update types_equal() to use the new API
certik Aug 7, 2025
0a017c8
Merge pull request #8281 from certik/ci_fix3
certik Aug 7, 2025
b48e7f8
chore: use `Union` symbol for type checking
kmr-srbh Aug 7, 2025
fd5671b
refactor: use a different type for fortran strings (non-null terimina…
akramhany Aug 7, 2025
b38f5b1
refactor: do small refactoring in _lcompilers_string_format_fortran
akramhany Aug 7, 2025
ed7b014
refactor: make parse_fortran_format null independant
akramhany Aug 7, 2025
0c8eb66
refactor: make find_matching_parentheses null independant
akramhany Aug 7, 2025
f9ebe41
Use add_or_overwrite_symbol
certik Aug 7, 2025
fbc7fb1
Better error for select rank
certik Aug 7, 2025
e2c2645
Merge pull request #8282 from kmr-srbh/types-equal-union
certik Aug 8, 2025
6e2c86c
Merge pull request #8278 from jinangshah21/fpm3
certik Aug 8, 2025
9f66b07
Merge pull request #8280 from akramhany/StringRefactorRuntimeFunctions
certik Aug 8, 2025
a41cb2b
Merge pull request #8284 from certik/j1
certik Aug 8, 2025
6429af8
refactor: CreateLoad to CreateLoad2 in visit_FunctionCall
sriganeshres Jul 31, 2025
613a159
refactor: CreateLoad to CreateLoad2 in visit_ArraySizeUtil
sriganeshres Jul 31, 2025
30688e1
refactor: CreateLoad to CreateLoad2 in lfortran_complex_bin_op
sriganeshres Jul 31, 2025
439162f
refactor: CreateLoad to CreateLoad2 in lfortran_strrepeat
sriganeshres Jul 31, 2025
08742c4
refactor: CreateLoad to CreateLoad2 in visit_AllocateUtil
sriganeshres Jul 31, 2025
b3d40a7
refactor: CreateLoad to CreateLoad2 in call_lfortran_free
sriganeshres Jul 31, 2025
bebf4a4
refactor: CreateLoad to CreateLoad2 in visit_Deallocate
sriganeshres Jul 31, 2025
d70a6c9
refactor: CreateLoad to CreateLoad2 in visit_UnionInstanceMember
sriganeshres Jul 31, 2025
6b47895
refactor: CreateLoad to CreateLoad2 in visit_ArrayItem
sriganeshres Jul 31, 2025
53dedef
refactor: CreateLoad to CreateLoad2 in allocate_array_members_of_stru…
sriganeshres Jul 31, 2025
6b9a126
refactor: CreateLoad to CreateLoad2 in set_VariableInital_value
sriganeshres Jul 31, 2025
7812121
refactor: CreateLoad to CreateLoad2 in define_function_exit
sriganeshres Jul 31, 2025
b3f5d02
implemented: get_type_from_ttype_t_util_from_symbol to get type from …
sriganeshres Jul 31, 2025
deccb34
refactor: CreateLoad to CreateLoad2 in generate_function
sriganeshres Jul 31, 2025
66d11c5
refactor: CreateLoad to CreateLoad2 in GetPointerCPtrUtil
sriganeshres Jul 31, 2025
e022f43
refactor: CreateLoad to CreateLoad2 in visit_CPtrToPointer
sriganeshres Jul 31, 2025
aed1918
refactor: CreateLoad to CreateLoad2 in visit_PointerAssociated
sriganeshres Jul 31, 2025
a998948
refactor: CreateLoad to CreateLoad2 in handle_array_section_associati…
sriganeshres Jul 31, 2025
96a1446
refactor: CreateLoad to CreateLoad2 in visit_Associate
sriganeshres Jul 31, 2025
25f39f7
refactor: CreateLoad to CreateLoad2 in visit_ArrayPhysicalCastUtil
sriganeshres Jul 31, 2025
4d7de2d
refactor: CreateLoad to CreateLoad2 in visit_SelectType
sriganeshres Jul 31, 2025
176269a
refactor: CreateLoad to CreateLoad2 in visit_IfExp
sriganeshres Aug 1, 2025
ef8942c
refactor: CreateLoad to CreateLoad2 in visit_RealBinOp
sriganeshres Aug 1, 2025
e459183
refactor: CreateLoad to CreateLoad2 in visit_ComplexBinOp
sriganeshres Aug 1, 2025
35b3a17
refactor: CreateLoad to CreateLoad2 in fetch_ptr
sriganeshres Aug 1, 2025
0a1a379
refactor: CreateLoad to CreateLoad2 in visit_Cast
sriganeshres Aug 1, 2025
a8326e7
refactor: CreateLoad to CreateLoad2 in visit_FileRead
sriganeshres Aug 1, 2025
ba55b4c
fix: added a assertion in get_type_from_ttype_t_util_from_symbol
sriganeshres Aug 4, 2025
79e3534
refactor: define_function_exit
sriganeshres Aug 4, 2025
76b1004
refactor: visit_Associate
sriganeshres Aug 4, 2025
f15b889
refactor: convert_call_args
sriganeshres Aug 7, 2025
abab9bf
refactor: visit_Associate
sriganeshres Aug 7, 2025
b6e7b0e
Update src/libasr/codegen/llvm_utils.h
certik Aug 8, 2025
8728aa7
Update src/libasr/codegen/llvm_utils.cpp
certik Aug 8, 2025
4cea336
testing CI triggering on specific label
assem2002 Aug 7, 2025
b57d697
Merge pull request #8191 from sriganeshres/refactor_load
certik Aug 8, 2025
9b1fb33
fix: don't update global struct_type var while creating v_tabs
jinangshah21 Aug 6, 2025
7fc3f27
Merge pull request #8274 from assem2002/testing3
certik Aug 8, 2025
d05f47e
Merge pull request #8286 from jinangshah21/fpm3
certik Aug 8, 2025
935b0a5
enh: support structType for mold in allocate
HarshitaKalani Aug 8, 2025
25b3e4d
test: add and register test
HarshitaKalani Aug 8, 2025
8ca5ab0
Merge pull request #8290 from HarshitaKalani/mold_01
certik Aug 8, 2025
7a33a8e
feat: add runtime ArrayItem bound checking
xaerru Jul 3, 2025
f3b922b
tests: fix arrays_08_size.f90
xaerru Jul 4, 2025
9722d5e
fix: eoshift function bounds error
xaerru Jul 4, 2025
0db6b5b
feat: use arrays-bound-checking option and add error tests
xaerru Jul 7, 2025
345382f
tests: add test for negative bounds array
xaerru Jul 7, 2025
ab7516b
tests: update references
xaerru Jul 7, 2025
3eb18f3
tests: fix array_indices_array_item bounds error
xaerru Jul 8, 2025
01c159a
tests: fix array_03.f90 bounds error
xaerru Jul 8, 2025
43e3898
fix: use global variables for llvm_symtab_deep_copy instead of stack …
xaerru Jul 8, 2025
d657ae6
ci: use --realloc-lhs with Numerical Methods Fortran
xaerru Jul 8, 2025
4553270
ci: use --realloc-lhs with fastGPT
xaerru Jul 8, 2025
a22b622
tests: fix non standard compliant tests related to ArrayItem
xaerru Jul 8, 2025
799c839
feat: handle StructInstanceMember in associate block
xaerru Jul 8, 2025
d257afa
tests: skip array bounds checking when no_llvm
xaerru Jul 8, 2025
0e29d6d
feat: enable array bounds checking by default
xaerru Jul 9, 2025
86360f1
tests: update references
xaerru Jul 9, 2025
7231622
refactor: order comparisons explicitly to fix macos fail
xaerru Jul 10, 2025
d196f5b
feat: throw runtime error for SubroutineCall if array bounds don't match
xaerru Jul 13, 2025
ee8dd1f
fix: remove array_bounds_check from run_tests.py because we do it by …
xaerru Jul 13, 2025
271290c
feat: add runtime bound checks for arrays when dimensions depend on f…
xaerru Jul 17, 2025
4bb82c3
fix: make get_past_array_physical_cast recursive to get past nested c…
xaerru Jul 23, 2025
b81d57c
fix: set dimension descriptor lower bound and size to 1 by default to…
xaerru Jul 24, 2025
850091e
feat: force ArrayPhysicalCast to have dimensions if not in a call
xaerru Jul 24, 2025
138bd0e
tests: skip bounds checking in some openmp tests
xaerru Jul 24, 2025
72e2d1c
tests: uncomment tests which fail with bounds checking
xaerru Jul 24, 2025
b1789b6
tests: update references after rebase
xaerru Jul 25, 2025
5220d79
fix: add unreachable after exit in bounds checking to fix a segfault
xaerru Jul 25, 2025
bca6d4e
fix(openmp): pass in lower_bounds in CPtrToPointer
xaerru Jul 25, 2025
e024834
tests: update references
xaerru Jul 25, 2025
313fe09
tests: mark format_20 as NO_FAST
xaerru Jul 28, 2025
fc25dcd
refactor: rename compiler_options.enable_bounds_checking to compiler_…
xaerru Jul 28, 2025
2e8a50c
revert: realloc_lhs fix
xaerru Jul 29, 2025
3789831
ci: remove unnecessary --no-array-bounds-checking in third party codes
xaerru Jul 31, 2025
4e8091b
fix: disable bounds checking when fast is enabled
xaerru Jul 31, 2025
9a619aa
fix: when variable has intent_in then don't load deep copy
xaerru Jul 31, 2025
dd50c97
tests: fix some tests
xaerru Jul 31, 2025
22efbcd
tests: update references
xaerru Jul 31, 2025
0ee4f01
ci: remove bounds checking from stdlib separate compilation
xaerru Jul 31, 2025
339c598
feat: implement rank checking and size checking
xaerru Aug 2, 2025
b610b3f
fix: ptr_loads and integer bin op type
xaerru Aug 3, 2025
4e320e8
ci: remove --no-array-bounds-checking flags
xaerru Aug 3, 2025
6492328
ci: update stdlib
xaerru Aug 4, 2025
daac676
fix: throw size error if passed in size is strictly less than expecte…
xaerru Aug 4, 2025
7bb2457
tests: remove --no-array-bounds-checking from some tests
xaerru Aug 7, 2025
8d86ab8
Merge pull request #7955 from xaerru/bound-check
certik Aug 8, 2025
beb3a31
fix: do not return struct symbol past external
kmr-srbh Aug 8, 2025
c1e3ddc
tests: add and register integration test
kmr-srbh Aug 8, 2025
7fe3652
Merge pull request #8297 from kmr-srbh/type-decl-past-external
certik Aug 9, 2025
85f1b85
fix: get correct struct sym which creating associated var
jinangshah21 Aug 8, 2025
eb775a6
tests: add tests and update test references
jinangshah21 Aug 8, 2025
7ba7289
Merge pull request #8288 from jinangshah21/fpm3
certik Aug 9, 2025
3bb4439
ci: update fpm ci (remove 6 workarounds)
jinangshah21 Aug 8, 2025
fcdce3d
Merge pull request #8298 from jinangshah21/fpm3
certik Aug 9, 2025
b0b912b
Solved and added testcase
HiteshGhanchi Aug 7, 2025
1610a7f
fix: correctly check argument matching for struct/class type
jinangshah21 Aug 9, 2025
835beb1
Merge pull request #8302 from jinangshah21/fpm3
certik Aug 9, 2025
7ce1f49
Merge pull request #8299 from HiteshGhanchi/7556
certik Aug 9, 2025
706ba5d
fix: skip scalar promotion for elemental functions
HarshitaKalani Aug 9, 2025
5f70ab8
test: add and register test
HarshitaKalani Aug 9, 2025
1771007
Merge pull request #8305 from HarshitaKalani/legacy_01
certik Aug 9, 2025
fe088c9
refactor: some of the string runtime functions (#8289)
sriganeshres Aug 9, 2025
f800975
Solving Long BOZ Strings Truncations (#8304)
YashNagda17 Aug 10, 2025
0a9fed6
fix: check for elemental function in type bound op overload
jinangshah21 Aug 10, 2025
f1ac18b
Merge pull request #8316 from jinangshah21/fpm3
certik Aug 10, 2025
92583e1
fix: create load for nested llvm_pointer SIM
jinangshah21 Aug 10, 2025
18d0c64
Tests : minor change to trigger the pull-request whenever commit hist…
assem2002 Aug 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/Exhaustive-Checks-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ on:
tags:
- 'v*'
pull_request:
types:
- labeled
- unlabeled
- synchronize
- opened
- reopened
branches:
- main

Expand All @@ -29,6 +35,7 @@ jobs:
debug_outOfSource:
name: Check Out-of-Source Debug build
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -88,6 +95,7 @@ jobs:
release:
name: Check Release build
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -191,6 +199,7 @@ jobs:
test_llvm:
name: Test LLVM ${{ matrix.llvm-version }}
runs-on: ${{ matrix.os }}
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -485,6 +494,7 @@ jobs:
upload_tarball:
name: Upload Tarball
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -519,6 +529,7 @@ jobs:
test_without_llvm:
name: Test without LLVM Backend
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -539,6 +550,7 @@ jobs:
test_mlir:
name: Test MLIR backend
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -587,6 +599,7 @@ jobs:
upload_docs:
name: Documentation
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -637,6 +650,7 @@ jobs:

build-and-push-image:
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'Tests::Run-Exhaustive') || github.event_name == 'push'
permissions:
contents: read
packages: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Quick-Checks-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ jobs:
cd integration_tests
./run_tests.py -b llvm_omp

- name: Test GFortran, Debug Build, Fortran, OpenMP, C/C++ backend, Upload Tarball, CPP Build, WASM - Test Target_Offload
- name: Test GFortran, Debug Build, Fortran, OpenMP, C/C++ backend, Upload Tarball, CPP Build, WASM - Test Target Offload
shell: bash -e -l {0}
if: contains(matrix.os, 'ubuntu') && contains(matrix.llvm-version, '11')
run: |
Expand Down
14 changes: 7 additions & 7 deletions ci/parser.yy.patch
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
diff --git a/src/lfortran/parser/parser.yy b/src/lfortran/parser/parser.yy
index 94c9668ac..32855e999 100644
index 65e2c2b0e..6a153d2d4 100644
--- a/src/lfortran/parser/parser.yy
+++ b/src/lfortran/parser/parser.yy
@@ -1395,9 +1395,7 @@ common_block_list_top
@@ -1405,9 +1405,7 @@ common_block_list_top
;

common_block_list
Expand All @@ -13,7 +13,7 @@ index 94c9668ac..32855e999 100644
;

common_block
@@ -2562,177 +2560,4 @@ id_opt
@@ -2572,177 +2570,4 @@ id_opt

id
: TK_NAME { $$ = SYMBOL($1, @$); }
Expand Down Expand Up @@ -186,8 +186,8 @@ index 94c9668ac..32855e999 100644
- | KW_WHERE { $$ = SYMBOL($1, @$); }
- | KW_WHILE { $$ = SYMBOL($1, @$); }
- | KW_WRITE { $$ = SYMBOL($1, @$); }
- | KW_LF_LIST { $$ = SYMBOL($1, @$); }
- | KW_LF_SET { $$ = SYMBOL($1, @$); }
- | KW_LF_DICT { $$ = SYMBOL($1, @$); }
- | KW_LF_TUPLE { $$ = SYMBOL($1, @$); }
- | KW_LIST { $$ = SYMBOL($1, @$); }
- | KW_SET { $$ = SYMBOL($1, @$); }
- | KW_DICT { $$ = SYMBOL($1, @$); }
- | KW_TUPLE { $$ = SYMBOL($1, @$); }
;
4 changes: 2 additions & 2 deletions ci/test_third_party_codes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,9 @@ time_section "🧪 Testing FPM" '
git clone https://github.com/jinangshah21/fpm.git
cd fpm
export PATH="$(pwd)/../src/bin:$PATH"
git checkout lf-6
git checkout lf-7
micromamba install -c conda-forge fpm
git checkout b946c489ef575e8103b6f5b07bfdfe0171e1dac5
git checkout 0495209655831f5a13f643feaa790e08851adf8a
fpm --compiler=$FC build
print_success "Done with FPM"
cd ..
Expand Down
8 changes: 4 additions & 4 deletions grammar/AST.asdl
Original file line number Diff line number Diff line change
Expand Up @@ -339,10 +339,10 @@ decl_type
| TypeProcedure
| TypeReal
| TypeType
| TypeLF_List
| TypeLF_Set
| TypeLF_Dict
| TypeLF_Tuple
| TypeList
| TypeSet
| TypeDict
| TypeTuple

event_attribute
= AttrStat(identifier variable)
Expand Down
79 changes: 49 additions & 30 deletions integration_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_EXTRAFILES RUN_EXT
)
add_executable(${name}
${CMAKE_SOURCE_DIR}/../src/libasr/runtime/lfortran_intrinsics.c
${CMAKE_SOURCE_DIR}/../src/libasr/runtime/cpu_impl.c
${CMAKE_SOURCE_DIR}/../src/libasr/runtime/cuda_cpu_runtime.c
${c_file}
)
target_include_directories(${name} PUBLIC
Expand Down Expand Up @@ -587,6 +587,7 @@ RUN(NAME integer_bin_op_dim_external_module LABELS gfortran llvm llvm_wasm llvm_
RUN(NAME array_bound_1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME array_bound_2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME array_bound_3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_bound_4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
Expand Down Expand Up @@ -730,7 +731,8 @@ RUN(NAME array_section_is_non_allocatable LABELS gfortran llvm llvm_wasm llvm_wa
RUN(NAME array_indices_array_section LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_indices_array_section_assignment LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_constructor_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_constructor_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
# FIXME: fails with bounds checking
RUN(NAME array_constructor_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --no-array-bounds-checking)
RUN(NAME allocatble_c_ptr LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME hashmap_struct_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME hashmap_nested_dealloc_derived_pointer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
Expand Down Expand Up @@ -1126,7 +1128,8 @@ RUN(NAME intrinsics_283 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # asinh
RUN(NAME intrinsics_284 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # acosh
RUN(NAME intrinsics_285 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # real
RUN(NAME intrinsics_286 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # atanh
RUN(NAME intrinsics_288 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spread
# FIXME:Fix this test with --array-bounds-checking (https://github.com/lfortran/lfortran/pull/7955#issuecomment-3036967309)
RUN(NAME intrinsics_288 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --no-array-bounds-checking) # spread
RUN(NAME intrinsics_289 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # ishftc
RUN(NAME intrinsics_290 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # log10
RUN(NAME intrinsics_291 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # gamma
Expand Down Expand Up @@ -1611,6 +1614,8 @@ RUN(NAME derived_types_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_72 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs)
RUN(NAME derived_types_73 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_75 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_76 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_type_with_default_init LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_type_with_default_init_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

Expand Down Expand Up @@ -1653,6 +1658,7 @@ RUN(NAME allocate_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --
RUN(NAME allocate_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME allocate_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME allocate_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME automatic_allocation_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --std=f23)
RUN(NAME automatic_allocation_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --std=f23)
Expand Down Expand Up @@ -1685,6 +1691,7 @@ RUN(NAME associate_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES associate_18_module.f90)
RUN(NAME associate_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES associate_21_mod.f90)
RUN(NAME attr_dim_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME attr_dim_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME attr_dim_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
Expand Down Expand Up @@ -1790,6 +1797,7 @@ RUN(NAME nested_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME nested_vars1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c)
RUN(NAME nested_vars2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c)
Expand Down Expand Up @@ -1926,6 +1934,7 @@ RUN(NAME class_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs)
RUN(NAME class_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS -c --cpp EXTRAFILES class_63_module_1.f90 class_63_module_2.f90)


RUN(NAME class_procedure_args_01 LABELS gfortran llvm)
Expand Down Expand Up @@ -2172,6 +2181,9 @@ RUN(NAME procedure_18 LABELS gfortran llvm)
RUN(NAME procedure_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_20 LABELS gfortran llvm)
RUN(NAME procedure_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES procedure_22_a.f90)
RUN(NAME procedure_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)


RUN(NAME allocated_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
Expand Down Expand Up @@ -2330,6 +2342,9 @@ RUN(NAME legacy_array_sections_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
RUN(NAME legacy_array_sections_04 LABELS gfortran llvm2 EXTRA_ARGS --implicit-interface --legacy-array-sections EXTRAFILES legacy_array_sections_04b.f90)
RUN(NAME legacy_array_sections_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)

RUN(NAME cmake_minimal_test_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME char_array_initialization_declaration LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

Expand Down Expand Up @@ -2406,6 +2421,7 @@ RUN(NAME elemental_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME types_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME types_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
Expand Down Expand Up @@ -2501,8 +2517,10 @@ RUN(NAME openmp_66 LABELS llvm_omp gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_67 LABELS llvm_omp gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_68 LABELS llvm_omp gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_69 LABELS llvm_omp gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_72 LABELS target_offload)
RUN(NAME openmp_70 LABELS target_offload)
RUN(NAME openmp_71 LABELS target_offload)
RUN(NAME openmp_72 LABELS target_offload)
RUN(NAME openmp_73 LABELS llvm_omp gfortran GFORTRAN_ARGS -fopenmp)

RUN(NAME nullify_01 LABELS gfortran fortran llvm)
RUN(NAME nullify_02 LABELS gfortran fortran llvm)
Expand Down Expand Up @@ -2583,37 +2601,38 @@ RUN(NAME formatted_read_01 LABELS gfortran llvm COPY_TO_BIN formatted_read_input


# LFortran extensions (lists, dicts, etc.)
RUN(NAME lp_list_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_of_lists_test LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_set_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_dict_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_list_of_tuples_test LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_of_lists_test LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME set_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME dict_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --no-array-bounds-checking) # No gfortran
# RUN(NAME list_of_tuples_test LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran


# Completely ported tests
RUN(NAME lp_list_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_06_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_08_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_list_test_09_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

# RUN(NAME lp_tuple_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_tuple_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_tuple_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_tuple_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_tuple_test_concat_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_tuple_test_nested_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

RUN(NAME lp_dict_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_dict_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME lp_dict_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_dict_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_06_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_08_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME list_test_09_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

# RUN(NAME tuple_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME tuple_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME tuple_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME tuple_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME tuple_test_concat_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME tuple_test_nested_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

RUN(NAME dict_test_01_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME dict_test_02_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
# RUN(NAME dict_test_03_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME dict_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

# LFortran extensions (union)
RUN(NAME lp_union_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME lp_union_test_02 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME union_test_01 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME union_test_02 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME union_test_03 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

# LFortran extensions (unsigned int)
RUN(NAME test_unsigned LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
14 changes: 14 additions & 0 deletions integration_tests/allocate_28.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
program allocate_28
implicit none
type :: my_type
integer :: x
end type
class(my_type), allocatable :: obj
class(my_type), allocatable :: original
allocate(my_type :: original)
original%x = 123
allocate(obj, mold=original)
obj%x = 456
print *, "obj%x =", obj%x
if (obj%x /= 456) error stop
end program allocate_28
7 changes: 7 additions & 0 deletions integration_tests/array_bound_4.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
program array_bound_4
integer :: x(-10:-5)

if (lbound(x, 1) /= -10) error stop
if (ubound(x, 1) /= -5) error stop
if (size(x) /= 6) error stop
end program
19 changes: 13 additions & 6 deletions integration_tests/associate_08.f90
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,18 @@ module associate_08_module_1
subroutine sub_1(type_1, i)
class(t_2), intent(inout) :: type_1
integer, intent(in) :: i
allocate(type_1%type_2(0))
associate(target=>type_1%type_2(0)%i)
allocate(type_1%type_2(1))
associate(target=>type_1%type_2(1)%i)
target = i
end associate
end subroutine sub_1

subroutine sub_2(progress)
class(t_2), intent(inout), allocatable :: progress(:)
allocate(progress(0)%type_2(0))
associate(target => progress(0))
target%type_2(0)%i = 345
allocate(progress(1))
allocate(progress(1)%type_2(1))
associate(target => progress(1))
target%type_2(1)%i = 345
end associate
end subroutine sub_2
end module
Expand All @@ -31,6 +32,12 @@ program associate2
use associate_08_module_1
implicit none
type(t_2) :: type_1
class(t_2), allocatable :: t_2_array(:)
call sub_1(type_1, 123)
print *, type_1%type_2(0)%i
if (type_1%type_2(1)%i /= 123) error stop
print *, type_1%type_2(1)%i

! TODO: Fix when implementing class arrays
! call sub_2(t_2_array)
! print *, t_2_array(1)%type_2(1)%i
end program associate2
Loading
Loading