cmake_minimum_required(VERSION 3.10 FATAL_ERROR)

project(lfort C Fortran)

if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Debug
        CACHE STRING "Build type (Debug, Release)" FORCE)
endif ()

set(LFORTRAN_BACKEND no CACHE STRING "Only compile the LFortran subset for the given backend")
set(FAST no CACHE BOOL "Run supported tests with --fast")
set(DETECT_LEAKS no CACHE BOOL "Run tests with --detect-leaks")
option(LFORTRAN_SMOKE "Build and run the representative CI smoke suite" OFF)
if (LFORTRAN_SMOKE)
    include(${CMAKE_CURRENT_SOURCE_DIR}/smoke_tests.cmake)
endif()
set(LFORTRAN_EXCLUDE_TESTS "" CACHE STRING
    "Registered test names (semicolon-separated) not to build or run in any mode")
set(LFORTRAN_REGISTERED_TESTS "")

set(STD_F23 no CACHE BOOL "Run tests with --std-f23")
set(LLVM_GOC no CACHE BOOL "Run tests with --separate-compilation")

enable_testing()

message("\n")
message("Configuration results")
message("---------------------")
message("Fortran compiler: ${CMAKE_Fortran_COMPILER}")
message("C compiler      : ${CMAKE_C_COMPILER}")
message("Build type: ${CMAKE_BUILD_TYPE}")
string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
message("Fortran compiler flags: ${CMAKE_Fortran_FLAGS_${BTYPE}}")
message("C compiler flags      : ${CMAKE_C_FLAGS_${BTYPE}}")
message("Installation prefix: ${CMAKE_INSTALL_PREFIX}")
message("LFORTRAN_BACKEND: ${LFORTRAN_BACKEND}")
message("FAST: ${FAST}")
message("DETECT_LEAKS: ${DETECT_LEAKS}")

message("STD_F23: ${STD_F23}")
message("LLVM_GOC: ${LLVM_GOC}")

# Make ISO_Fortran_binding.h available to the C compiler.
# LFortran ships its own header in src/libasr/runtime/.
# GFortran on macOS needs special handling: its include/ directory also
# contains stddef.h and other headers that conflict with the system C
# compiler (Clang), so we copy just the one header into a clean directory.
# On Linux, GCC's C compiler can find the header automatically.
# Flang/Clang can also find it automatically.
if (LFORTRAN_BACKEND AND NOT LFORTRAN_BACKEND STREQUAL "flang")
    # LFortran
    set(ISO_FORTRAN_BINDING_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/../src/libasr/runtime")
elseif (NOT LFORTRAN_BACKEND AND APPLE)
    # GFortran on macOS
    find_file(ISO_FORTRAN_BINDING_H ISO_Fortran_binding.h
        PATHS ${CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES}
        NO_DEFAULT_PATH)
    if (ISO_FORTRAN_BINDING_H)
        set(ISO_FORTRAN_BINDING_INCLUDE_DIR "${CMAKE_BINARY_DIR}/fortran_c_interop")
        file(MAKE_DIRECTORY ${ISO_FORTRAN_BINDING_INCLUDE_DIR})
        file(COPY ${ISO_FORTRAN_BINDING_H} DESTINATION ${ISO_FORTRAN_BINDING_INCLUDE_DIR})
    endif()
endif()

macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_EXTRAFILES RUN_EXTRA_ARGS RUN_COPY_TO_BIN RUN_GFORTRAN_ARGS RUN_SHARED_LIBRARY_FILES RUN_STATIC_LIBRARY_FILES RUN_HOST_STATIC_LIBRARY)
    set(fail ${${RUN_FAIL}})
    set(name ${${RUN_NAME}})
    set(file_name ${${RUN_FILE_NAME}})
    set(labels ${${RUN_LABELS}})
    set(extra_files ${${RUN_EXTRAFILES}})
    set(extra_args ${${RUN_EXTRA_ARGS}})
    set(copy_to_bin ${${RUN_COPY_TO_BIN}})
    set(gfortran_args ${${RUN_GFORTRAN_ARGS}})
    set(shared_library_files ${${RUN_SHARED_LIBRARY_FILES}})
    set(static_library_files ${${RUN_STATIC_LIBRARY_FILES}})
    # HOST_STATIC_LIBRARY: the metal and cuda backends compile
    # STATIC_LIBRARY_FILES without their device flags, like a library built
    # for the host only, and the program with them.
    set(host_static_library ${${RUN_HOST_STATIC_LIBRARY}})

    if (NOT name)
        message(FATAL_ERROR "Must specify the NAME argument")
    endif()

    if (host_static_library AND NOT static_library_files)
        message(FATAL_ERROR "${name}: HOST_STATIC_LIBRARY requires STATIC_LIBRARY_FILES")
    endif()

    # One `cuda` label selects a test for every mode of the CUDA device code:
    # the `cuda` backend runs it natively on an NVIDIA GPU, `cuda_cpu` in the
    # CPU emulation, and `hip` on an AMD GPU.
    if ("cuda_cpu" IN_LIST labels OR "hip" IN_LIST labels)
        message(FATAL_ERROR "${name}: use the `cuda` label, there are no `cuda_cpu` and `hip` labels")
    endif()
    set(label_backend ${LFORTRAN_BACKEND})
    if (LFORTRAN_BACKEND STREQUAL "cuda_cpu" OR LFORTRAN_BACKEND STREQUAL "hip")
        set(label_backend cuda)
    endif()

    if (LFORTRAN_BACKEND)
        if (${label_backend} IN_LIST labels)
            # Test is supported by the given LFortran backend
            set(ADD_TEST ON)
        else()
            # Test is not supported by the given LFortran backend
            set(ADD_TEST OFF)
        endif()
    else()
        # GFortran
        if ("gfortran" IN_LIST labels)
            set(ADD_TEST ON)
        elseif ("gfortranImplicitArgument" IN_LIST labels)
            set(ADD_TEST ON)
        else()
            set(ADD_TEST OFF)
        endif()
    endif()

    if (LFORTRAN_SMOKE AND NOT RUN_SMOKE_NAME IN_LIST LFORTRAN_SMOKE_TESTS)
        set(ADD_TEST OFF)
    endif()
    if (RUN_SMOKE_NAME IN_LIST LFORTRAN_EXCLUDE_TESTS)
        set(ADD_TEST OFF)
    endif()

    if (ADD_TEST AND shared_library_files AND LFORTRAN_BACKEND
            AND NOT LFORTRAN_BACKEND STREQUAL "llvm")
        message(FATAL_ERROR "SHARED_LIBRARY_FILES is only supported with the gfortran and llvm labels")
    endif()

    if (ADD_TEST)
        if ((LFORTRAN_BACKEND STREQUAL "cpp") OR (LFORTRAN_BACKEND STREQUAL "x86")
                OR (LFORTRAN_BACKEND STREQUAL "c") OR (LFORTRAN_BACKEND STREQUAL "fortran"))
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC ${extra_args} --backend=${LFORTRAN_BACKEND})
            target_link_options(${name} PUBLIC --backend=${LFORTRAN_BACKEND})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "wasm")
            # wasm test
            execute_process(COMMAND lfortran ${extra_args} --backend=wasm ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90 -o ${name})

            find_program(WASM_EXEC_RUNTIME node)
            execute_process(COMMAND "${WASM_EXEC_RUNTIME}" --version
                            OUTPUT_VARIABLE WASM_EXEC_VERSION
                            OUTPUT_STRIP_TRAILING_WHITESPACE)

            string(REGEX REPLACE "v([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" NODE_MAJOR_VERSION "${WASM_EXEC_VERSION}")

            if (NODE_MAJOR_VERSION LESS 16)
                message(STATUS "${WASM_EXEC_RUNTIME} version: ${WASM_EXEC_VERSION}")
                set(WASM_EXEC_FLAGS "--experimental-wasm-bigint")
            endif()
            set(WASM_EXEC_FLAGS ${WASM_EXEC_FLAGS} "--experimental-wasi-unstable-preview1")
            add_test(${name} ${WASM_EXEC_RUNTIME} ${WASM_EXEC_FLAGS} ${CURRENT_BINARY_DIR}/${name}.js)
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_wasm")
            find_program(WASM_EXEC_RUNTIME wasmtime)
            execute_process(COMMAND "${WASM_EXEC_RUNTIME}" --version
                            OUTPUT_VARIABLE WASM_EXEC_VERSION
                            OUTPUT_STRIP_TRAILING_WHITESPACE)
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC ${extra_args} --backend=llvm --target=wasm32-wasi)
            target_link_options(${name} PUBLIC --backend=llvm --target=wasm32-wasi
                -Wl,-zstack-size=52428800 -Wl,--initial-memory=268435456 -Wl,--max-memory=268435456)
            add_test(${name} ${WASM_EXEC_RUNTIME} --dir=. ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_wasm_emcc")
            find_program(WASM_EXEC_RUNTIME node)
            execute_process(COMMAND "${WASM_EXEC_RUNTIME}" --version
                            OUTPUT_VARIABLE WASM_EXEC_VERSION
                            OUTPUT_STRIP_TRAILING_WHITESPACE)
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC ${extra_args} --backend=llvm --target=wasm32-unknown-emscripten)
            target_link_options(${name} PUBLIC --backend=llvm --target=wasm32-unknown-emscripten)
            if (copy_to_bin)
                target_link_options(${name} PUBLIC --emcc-embed ${copy_to_bin})
            endif()
            add_test(${name} ${WASM_EXEC_RUNTIME} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm2")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC --separate-compilation ${extra_args})
            target_link_options(${name} PUBLIC  --separate-compilation ${extra_args})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_rtlib")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC --separate-compilation ${extra_args})
            set_source_files_properties(${file_name}.f90 PROPERTIES COMPILE_OPTIONS "--rtlib")
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvmImplicit")
            execute_process(COMMAND lfortran ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                ${extra_args} --implicit-typing --implicit-interface -o ${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvmStackArray")
            execute_process(COMMAND lfortran ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                ${extra_args} --stack-arrays=true -o ${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_integer_8")
            execute_process(COMMAND lfortran ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                ${extra_args} -fdefault-integer-8 -o ${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_infer")
            execute_process(COMMAND lfortran ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                ${extra_args} --infer -o ${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_nopragma")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC --ignore-pragma ${extra_args})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "c_nopragma")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC --backend=c --ignore-pragma ${extra_args})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_single_invocation")
            set(extra_files_full ${extra_files})
            list(TRANSFORM extra_files_full PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/")
            add_custom_command(
                OUTPUT ${CURRENT_BINARY_DIR}/${name}
                COMMAND lfortran -I${CMAKE_CURRENT_SOURCE_DIR} ${extra_args}
                    ${extra_files_full} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                    -o ${CURRENT_BINARY_DIR}/${name}
                DEPENDS ${extra_files_full} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
            )
            add_custom_target(${name}_single_invocation ALL DEPENDS ${CURRENT_BINARY_DIR}/${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:${extra_args}>)
            if (ISO_FORTRAN_BINDING_INCLUDE_DIR)
                target_include_directories(${name} PRIVATE ${ISO_FORTRAN_BINDING_INCLUDE_DIR})
            endif()
            if (shared_library_files)
                # CMake does not know LFortran and links shared libraries with
                # the GCC spelling `-shared`; LFortran spells it `--shared`.
                # This variable applies to every shared library in this
                # directory, and with the llvm label all of them use LFortran.
                set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "--shared")
                add_library(${name}_lib SHARED ${shared_library_files})
                target_compile_options(${name}_lib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${extra_args}>)
                target_link_libraries(${name} PRIVATE ${name}_lib)
            endif()
            if (static_library_files)
                add_library(${name}_staticlib STATIC ${static_library_files})
                target_compile_options(${name}_staticlib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${extra_args}>)
                target_link_libraries(${name} PRIVATE ${name}_staticlib)
            endif()
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_omp")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC --openmp --openmp-lib-dir=$ENV{CONDA_PREFIX}/lib ${extra_args})
            target_link_options(${name} PUBLIC --openmp --openmp-lib-dir=$ENV{CONDA_PREFIX}/lib ${extra_args})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
            set_tests_properties(${name} PROPERTIES
                ENVIRONMENT
                    "KMP_TEAMS_THREAD_LIMIT=32"
            )
        elseif (LFORTRAN_BACKEND STREQUAL "llvm_submodule")
            set(object_files "")
            set(prev_file "")
            foreach(extra_file ${extra_files})
                get_filename_component(obj_name ${extra_file} NAME_WE)
                add_library(${obj_name} OBJECT ${extra_file})
                target_compile_options(${obj_name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:${extra_args}>)
                if (prev_file)
                    add_dependencies(${obj_name} ${prev_file})
                endif()
                set(prev_file ${obj_name})
                list(APPEND object_files $<TARGET_OBJECTS:${obj_name}>)
            endforeach()
            add_executable(${name} ${file_name}.f90 ${object_files})
            target_compile_options(${name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:${extra_args}>)
            add_dependencies(${name} ${prev_file})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "gfortranModfileCompilation")
            execute_process(COMMAND gfortran ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90 -c)
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "mlir")
            execute_process(COMMAND lfortran ${extra_args} --backend=mlir
                ${CMAKE_CURRENT_SOURCE_DIR}/${file_name}.f90 -o ${name})
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "metal")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:--gpu=metal ${extra_args}>)
            target_link_options(${name} PUBLIC --gpu=metal)
            if (static_library_files)
                set(library_device_args --gpu=metal)
                if (host_static_library)
                    set(library_device_args "")
                endif()
                add_library(${name}_staticlib STATIC ${static_library_files})
                target_compile_options(${name}_staticlib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${library_device_args} ${extra_args}>)
                target_link_libraries(${name} PRIVATE ${name}_staticlib)
            endif()
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "cuda" OR LFORTRAN_BACKEND STREQUAL "cuda_cpu"
                OR LFORTRAN_BACKEND STREQUAL "hip")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:--gpu=${LFORTRAN_BACKEND} ${extra_args}>)
            target_link_options(${name} PUBLIC --gpu=${LFORTRAN_BACKEND})
            if (static_library_files)
                set(library_device_args --gpu=${LFORTRAN_BACKEND})
                if (host_static_library)
                    set(library_device_args "")
                endif()
                add_library(${name}_staticlib STATIC ${static_library_files})
                target_compile_options(${name}_staticlib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${library_device_args} ${extra_args}>)
                target_link_libraries(${name} PRIVATE ${name}_staticlib)
            endif()
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        elseif (LFORTRAN_BACKEND STREQUAL "flang")
            add_executable(${name} ${file_name}.f90 ${extra_files})
            if (ISO_FORTRAN_BINDING_INCLUDE_DIR)
                target_include_directories(${name} PRIVATE ${ISO_FORTRAN_BINDING_INCLUDE_DIR})
            endif()
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        else ()
            add_executable(${name} ${file_name}.f90 ${extra_files})
            target_compile_options(${name} PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:${gfortran_args}>)
            target_link_options(${name} PUBLIC ${gfortran_args})
            if (ISO_FORTRAN_BINDING_INCLUDE_DIR)
                target_include_directories(${name} PRIVATE ${ISO_FORTRAN_BINDING_INCLUDE_DIR})
            endif()
            if (shared_library_files)
                add_library(${name}_lib SHARED ${shared_library_files})
                target_compile_options(${name}_lib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${gfortran_args}>)
                target_link_libraries(${name} PRIVATE ${name}_lib)
            endif()
            if (static_library_files)
                add_library(${name}_staticlib STATIC ${static_library_files})
                target_compile_options(${name}_staticlib PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${gfortran_args}>)
                target_link_libraries(${name} PRIVATE ${name}_staticlib)
            endif()
            add_test(${name} ${CURRENT_BINARY_DIR}/${name})
        endif()

        if (labels)
            set_tests_properties(${name} PROPERTIES LABELS "${labels}")
        endif()

        if (fail)
            set_tests_properties(${name} PROPERTIES WILL_FAIL TRUE)
        endif()

        if (copy_to_bin)
            file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/${copy_to_bin} DESTINATION ${CURRENT_BINARY_DIR})
        endif()

        # A test that reuses another test's source (FILE) builds the same
        # modules as that test. Give it its own module directory, so that a
        # parallel build of the two targets does not write the same .mod file.
        if (RUN_FILE AND TARGET ${name})
            set_target_properties(${name} PROPERTIES
                Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/modules/${name})
        endif()
    endif()
endmacro(RUN_UTIL)

macro(RUN)
    set(options FAIL NO_FAST NO_FAST_MATH NO_DETECT_LEAKS NO_STD_F23 NO_LLVM_GOC HOST_STATIC_LIBRARY)
    set(oneValueArgs NAME FILE INCLUDE_PATH COPY_TO_BIN NUM_IMAGES)
    set(multiValueArgs LABELS EXTRAFILES EXTRA_ARGS GFORTRAN_ARGS SHARED_LIBRARY_FILES STATIC_LIBRARY_FILES)
    cmake_parse_arguments(RUN "${options}" "${oneValueArgs}"
                        "${multiValueArgs}" ${ARGN} )
    set(RUN_SMOKE_NAME "${RUN_NAME}")
    list(APPEND LFORTRAN_REGISTERED_TESTS "${RUN_NAME}")

    foreach(b ${RUN_LABELS})
        if (NOT (b MATCHES "^(llvm|llvm2|llvm_rtlib|c|cpp|x86|wasm|gfortran|flang|llvmImplicit|llvmStackArray|llvm_integer_8|llvm_infer|fortran|c_nopragma|llvm_nopragma|llvm_wasm|llvm_wasm_emcc|llvm_omp|llvm_submodule|mlir|llvm_single_invocation|metal|cuda|cuda_cpu|hip)$"))
            message(FATAL_ERROR "Unsupported backend: ${b}")
        endif()
    endforeach()

    # Use FILE if provided, otherwise use NAME as the file name
    if (RUN_FILE)
        set(RUN_FILE_NAME ${RUN_FILE})
    else()
        set(RUN_FILE_NAME ${RUN_NAME})
    endif()

    if (RUN_INCLUDE_PATH)
        # Only one include path supported for now
        # Later add support for multiple include paths by looping over and appending to extra args
        set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} -I${CMAKE_CURRENT_SOURCE_DIR}/${RUN_INCLUDE_PATH})
        set(RUN_GFORTRAN_ARGS ${RUN_GFORTRAN_ARGS} -I${CMAKE_CURRENT_SOURCE_DIR}/${RUN_INCLUDE_PATH})
    endif()

    if ((STD_F23) AND (NOT RUN_NO_STD_F23))
        set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --std=f23)
        set(RUN_NAME "${RUN_NAME}_STD_F23")
    endif()

    if ((LLVM_GOC) AND (NOT RUN_NO_LLVM_GOC) AND (NOT LFORTRAN_BACKEND STREQUAL "fortran"))
        set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --separate-compilation)
        set(RUN_NAME "${RUN_NAME}_LLVM_GOC")
    endif()

    if (DETECT_LEAKS AND (NOT RUN_NO_DETECT_LEAKS))
        set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --detect-leaks)
        set(RUN_NAME "${RUN_NAME}_DETECT_LEAKS")
    endif()

    if (FAST AND (NOT RUN_NO_FAST))
        set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --fast)
        if (RUN_NO_FAST_MATH)
            set(RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --no-fast-math)
        endif()
        set(RUN_NAME "${RUN_NAME}_FAST")
        list(REMOVE_ITEM RUN_LABELS gfortran) # remove gfortran from --fast test
        RUN_UTIL(RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_EXTRAFILES RUN_EXTRA_ARGS RUN_COPY_TO_BIN RUN_GFORTRAN_ARGS RUN_SHARED_LIBRARY_FILES RUN_STATIC_LIBRARY_FILES RUN_HOST_STATIC_LIBRARY)
    else ()
        RUN_UTIL(RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_EXTRAFILES RUN_EXTRA_ARGS RUN_COPY_TO_BIN RUN_GFORTRAN_ARGS RUN_SHARED_LIBRARY_FILES RUN_STATIC_LIBRARY_FILES RUN_HOST_STATIC_LIBRARY)
    endif()

endmacro(RUN)

# only compiles till object file
# to make sure that the ASR generation is successful
macro(COMPILE)
    set(oneValueArgs NAME)
    set(multiValueArgs COMPILERS)
    cmake_parse_arguments(COMPILE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
    set(name ${COMPILE_NAME})
    set(compilers ${COMPILE_COMPILERS})
    if (NOT name)
        message(FATAL_ERROR "Must specify the NAME argument")
    endif()

    if (NOT compilers)
        message(FATAL_ERROR "Must specify the COMPILER argument")
    endif()

    list(APPEND LFORTRAN_REGISTERED_TESTS "${name}")
    if ((NOT LFORTRAN_SMOKE OR name IN_LIST LFORTRAN_SMOKE_TESTS)
            AND NOT name IN_LIST LFORTRAN_EXCLUDE_TESTS)
        foreach(compiler ${compilers})
            if (compiler STREQUAL "lfortran" AND ${LFORTRAN_BACKEND} STREQUAL "llvm")
                add_custom_command(
                    OUTPUT ${name}_lfortran.mod
                    COMMAND lfortran -c ${CMAKE_CURRENT_SOURCE_DIR}/${name}.f90)
                add_custom_target(${name}_lfortran ALL DEPENDS ${name}_lfortran.mod)
            elseif(compiler STREQUAL "gfortran" AND ${LFORTRAN_BACKEND} STREQUAL "no")
                add_custom_command(
                    OUTPUT ${name}_gfortran.mod
                    COMMAND gfortran -c ${CMAKE_CURRENT_SOURCE_DIR}/${name}.f90)
                add_custom_target(${name}_gfortran ALL DEPENDS ${name}_gfortran.mod)
            endif()
        endforeach()
    endif()
endmacro(COMPILE)

# The supported test labels are:
#
# gfortran      --- compile with GFortran
# fortran       --- convert to Fortran code and compile with GFortran
# llvm          --- compile with LFortran, only generate binary code at the very end
# llvm2         --- compile with LFortran, generate object files
# llvm_rtlib    --- compile with LFortran loading ASR runtime library, generate object files
# cpp           --- compile to C++, compile C++ to binary
# x86           --- compile to x86 binary directly
# wasm          --- compile to WASM binary directly
# mlir          --- generate mlir, convert to llvm ir and compile to binary
# llvm_single_invocation --- compile all sources in a single LFortran invocation

# `reduce` is not supported by GFortran yet:
# RUN(NAME doconcurrentloop_02 LABELS gfortran)

# GFortran + LFortran LLVM + LFortran C++

RUN(NAME program_cmake_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME program_cmake_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)

RUN(NAME internal_subr_host_vars_01 LABELS gfortran llvm c)
RUN(NAME internal_subr_assumed_size_01 LABELS gfortran llvm)
RUN(NAME nested_callback_arrays LABELS gfortran llvm)
RUN(NAME nested_callback_interface_01 LABELS gfortran llvm)

RUN(NAME abort_01 LABELS gfortran llvm)
RUN(NAME error_stop_01 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm llvm2 fortran)
RUN(NAME error_stop_02 FAIL LABELS llvm llvm_wasm llvm_wasm_emcc wasm llvm2 fortran)
RUN(NAME error_stop_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME error_stop_04 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME error_stop_05 LABELS gfortran llvm)
RUN(NAME stop_01 LABELS llvm llvm_wasm llvm_wasm_emcc wasm llvm2 c fortran)
RUN(NAME stop_02 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME stop_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME stop_04 LABELS gfortran llvm)
RUN(NAME stop_05 LABELS gfortran llvm)
RUN(NAME pause_01 LABELS gfortran llvm)
RUN(NAME ilp64_stop_01 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME ilp64_file_ops_01 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME ilp64_logical_read_01 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME ilp64_complex_literal_01 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME ilp64_logical_compare_01 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME ilp64_logical_compare_02 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME fpie_flag_01 LABELS gfortran llvm EXTRA_ARGS -fPIE GFORTRAN_ARGS -fPIE)
RUN(NAME stack_array_function_temporaries LABELS gfortran llvm
    EXTRA_ARGS --stack-arrays GFORTRAN_ARGS -fstack-arrays)
RUN(NAME stack_array_polymorphic_results LABELS gfortran llvm
    EXTRA_ARGS --stack-arrays GFORTRAN_ARGS -fstack-arrays)
RUN(NAME stack_array_automatic_elements LABELS gfortran llvm
    EXTRA_ARGS --stack-arrays GFORTRAN_ARGS -fstack-arrays)
# CMake links the shared library through the compiler driver with `--shared`
# for LFortran and `-shared` for GFortran (see SHARED_LIBRARY_FILES above).
# On macOS CMake uses `-dynamiclib` instead, and Windows needs an import library.
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
    RUN(NAME shared_library_01 LABELS gfortran llvm SHARED_LIBRARY_FILES shared_library_01_lib.f90)
endif()

RUN(NAME procedure_pointer_array_01 LABELS gfortran llvm)

RUN(NAME label_01 LABELS gfortran llvm)
RUN(NAME label_02 LABELS gfortran llvm) # END= label on a statement in the same IF block as the READ (#11499)
RUN(NAME format_hollerith_01 LABELS gfortran llvm)
RUN(NAME format_hollerith_02 LABELS gfortran llvm)

RUN(NAME print_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp llvm2 wasm fortran mlir)
RUN(NAME print_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 wasm fortran)
RUN(NAME print_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 wasm c fortran)
RUN(NAME print_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 fortran)
RUN(NAME print_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 fortran)
RUN(NAME print_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME print_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 fortran)
RUN(NAME print_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 fortran)
RUN(NAME print_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2)
RUN(NAME print_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2)
RUN(NAME print_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2)
RUN(NAME print_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME print_14 LABELS gfortran llvm)
RUN(NAME print_15 LABELS llvm NO_STD_F23)
RUN(NAME print_16 LABELS gfortran llvm EXTRA_ARGS --std=f23)
RUN(NAME print_17 LABELS gfortran llvm EXTRA_ARGS --std=f23)

RUN(NAME print_arr_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 wasm c fortran)
RUN(NAME print_arr_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 wasm c fortran)
RUN(NAME print_arr_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm2 fortran)
RUN(NAME print_arr_04 LABELS llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --apply-fortran-mangling)
RUN(NAME print_arr_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME crlf_fixed_form LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_select_case_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_select_case_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_select_rank_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_comment_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_blank_line_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_io_keyword_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_io_keyword_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_goto LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_stmt_func_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_string_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_string_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_semicolon_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_semicolon_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_do_name_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_do_while_name_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_type_save_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_type_attr_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_where_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_module_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_common_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form --implicit-typing GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_contains_01 LABELS gfortran llvm c cpp EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_function_kind_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form --implicit-interface GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_generic_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_abstract_interface_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_import_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_procedure_decl_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_namelist_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_attr_stmt_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_cycle_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_named_construct_01 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME fixed_form_named_construct_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME print_arr_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran mlir)
RUN(NAME print_arr_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME include_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME include_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME include_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran INCLUDE_PATH include_03)
RUN(NAME include_04 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form INCLUDE_PATH include_04)

RUN(NAME use_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm fortran)
RUN(NAME use_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm fortran)
RUN(NAME use_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm)
RUN(NAME use_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm)
RUN(NAME use_05 LABELS gfortran llvm fortran)
RUN(NAME use_06 LABELS gfortran llvm fortran)
RUN(NAME symbol_table_jloop_01 LABELS gfortran llvm)

RUN(NAME value_attribute_01 LABELS gfortran llvm)
RUN(NAME value_attribute_02 LABELS llvm)
RUN(NAME value_attribute_03 LABELS llvm)
RUN(NAME value_attribute_04 LABELS gfortran llvm)
RUN(NAME value_attribute_05 LABELS gfortran llvm EXTRAFILES value_attribute_05c.c EXTRA_ARGS --mangle-underscore-external)
RUN(NAME value_attribute_06 LABELS gfortran llvm)
RUN(NAME value_attribute_07 LABELS llvm)
RUN(NAME value_attribute_08 LABELS llvm)
RUN(NAME volatile_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME volatile_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME volatile_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME volatile_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME volatile_05 LABELS gfortran llvm)
RUN(NAME volatile_06 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME volatile_07 LABELS gfortran llvm)


RUN(NAME cond_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME cond_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME cond_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME cond_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME cond_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME cond_06 LABELS gfortran llvm)

# Fortran 2023 conditional expressions, `( cond ? a : b )` (10.1.2.3 R1002).
# These carry no `gfortran` label: CI compiles the gfortran pass with the
# system /usr/bin/gfortran, which is GNU 13.3.0 and predates the feature, so
# it reports "Expected a right parenthesis in expression" at the `?`. GFortran
# grew conditional expressions in GCC 15, and even GCC 16 supports them only
# for scalars of intrinsic type, so the array (06) and derived type (07) tests
# could not be labelled `gfortran` in any case.
RUN(NAME conditional_expr_01 LABELS llvm)
RUN(NAME conditional_expr_02 LABELS llvm)
RUN(NAME conditional_expr_03 LABELS llvm)
RUN(NAME conditional_expr_04 LABELS llvm)
RUN(NAME conditional_expr_05 LABELS llvm)
RUN(NAME conditional_expr_06 LABELS llvm)
RUN(NAME conditional_expr_07 LABELS llvm)
RUN(NAME conditional_expr_08 LABELS llvm)
RUN(NAME conditional_expr_09 LABELS llvm)
RUN(NAME conditional_expr_10 LABELS llvm)
RUN(NAME conditional_arg_01 LABELS llvm)
RUN(NAME conditional_arg_02 LABELS llvm)
RUN(NAME conditional_arg_03 LABELS llvm)

RUN(NAME complex_cloc_01 LABELS gfortran llvm)
RUN(NAME complex_solutions LABELS gfortran llvm)

RUN(NAME expr_01 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME expr_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran mlir)
RUN(NAME expr_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran mlir)
RUN(NAME expr_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm c fortran)
RUN(NAME expr_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp c fortran) # it contains pow, wasm supports only x**2
RUN(NAME expr_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran mlir)
RUN(NAME expr_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran mlir)
RUN(NAME expr_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran) # it uses string compare
RUN(NAME expr_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME string_concat_deferred_len LABELS gfortran llvm)
RUN(NAME string_trim_evaluation_01 LABELS gfortran llvm)
RUN(NAME string_trim_result_metadata_01 LABELS gfortran llvm)
RUN(NAME function_actual_association_01 LABELS gfortran llvm)
RUN(NAME function_result_preparation_01 LABELS gfortran llvm)
RUN(NAME function_result_preparation_02 LABELS gfortran llvm)
RUN(NAME function_result_preparation_03 LABELS gfortran llvm)
RUN(NAME function_result_preparation_04 LABELS gfortran llvm)
RUN(NAME function_result_preparation_05 LABELS gfortran llvm)
RUN(NAME function_result_preparation_06 LABELS gfortran llvm)
RUN(NAME function_result_preparation_07 LABELS gfortran llvm)
RUN(NAME expr_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME expr_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c)
RUN(NAME expr_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME expr_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)

RUN(NAME data_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME data_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME data_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME data_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME data_05 LABELS gfortran) # llvmImplicit removed
RUN(NAME data_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME data_07 LABELS gfortran) # TODO: Fix this test
RUN(NAME data_08 LABELS gfortran llvmImplicit)
RUN(NAME data_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME data_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_11 LABELS gfortran llvmImplicit)
RUN(NAME data_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME data_16 LABELS gfortran llvmImplicit)
RUN(NAME data_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME data_22 LABELS gfortran llvm)
RUN(NAME data_23 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME data_24 LABELS gfortran llvm)
RUN(NAME data_27 LABELS gfortran llvm)
RUN(NAME data_28 LABELS gfortran llvm)
# GFortran 13 ICEs on vector subscripts in DATA ("Vector sections in data statements")
RUN(NAME data_29 LABELS llvm)
RUN(NAME data_vector_subscript LABELS llvm)
RUN(NAME datastmt_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME slash_init_01 LABELS gfortran llvm)

RUN(NAME max_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME max_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME max_03 LABELS  llvm llvm_wasm llvm_wasm_emcc) #gfortran does not support reduce()
RUN(NAME min_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME min_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME min_03 LABELS gfortran llvm)
RUN(NAME minmax_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME minmax_02 LABELS gfortran llvm)
RUN(NAME arithmetic_if_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran) # arithmetic tests use goto
RUN(NAME arithmetic_if_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME arithmetic_if_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME arithmetic_if_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran)
RUN(NAME arithmetic_if_05 LABELS gfortran llvm c)

RUN(NAME if_label_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME select_label_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_case_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_case_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_case_03 LABELS gfortran llvm EXTRA_ARGS --separate-compilation)
RUN(NAME select_case_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)


RUN(NAME variables_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME variables_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME variables_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm c fortran)

RUN(NAME if_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME if_02 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c)
RUN(NAME if_03 FAIL LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c)
RUN(NAME if_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran)
RUN(NAME if_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm c fortran)
RUN(NAME if_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # select case range
RUN(NAME if_07 LABELS gfortran llvm)
RUN(NAME if_09 LABELS gfortran llvm)

RUN(NAME while_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm c fortran mlir)
RUN(NAME while_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm c fortran mlir x86)
RUN(NAME while_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm x86 EXTRA_ARGS --fixed-form fortran)
RUN(NAME while_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME while_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME while_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME while_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME while_08 LABELS gfortran llvm)
RUN(NAME while_09 LABELS gfortran llvm)
RUN(NAME while_10 LABELS gfortran llvm)

RUN(NAME doloop_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp x86 wasm fortran mlir)
RUN(NAME doloop_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp x86 wasm mlir fortran)
RUN(NAME doloop_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm fortran mlir x86)
RUN(NAME doloop_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # uses goto target
RUN(NAME doloop_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # uses goto
RUN(NAME doloop_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm fortran mlir x86)
RUN(NAME doloop_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm fortran mlir x86)
RUN(NAME doloop_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm fortran mlir x86)
RUN(NAME doloop_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # nested subroutine
RUN(NAME doloop_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # implicit cast loop variable
RUN(NAME doloop_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm mlir x86)
RUN(NAME doloop_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME doloop_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME doloop_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc mlir x86)
RUN(NAME doloop_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc mlir x86)
RUN(NAME doloop_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc mlir x86)
RUN(NAME doloop_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME doloop_18 LABELS gfortran llvm)
RUN(NAME doloop_19 LABELS gfortran llvm)
RUN(NAME doloop_20 LABELS gfortran llvm)
RUN(NAME doloop_21 LABELS gfortran llvm)
RUN(NAME doloop_22 LABELS gfortran llvm)
RUN(NAME doloop_23 LABELS gfortran llvm mlir)
RUN(NAME doloop_24 LABELS gfortran llvm c cpp mlir x86)

RUN(NAME cycle_and_exit1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp wasm mlir x86)
RUN(NAME cycle_and_exit2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp wasm mlir x86)
RUN(NAME cycle_and_exit3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm)
RUN(NAME cycle_and_exit4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm)
RUN(NAME cycle_and_exit5 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm)
RUN(NAME cycle_and_exit6 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp wasm mlir x86)

RUN(NAME goto_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp)
RUN(NAME goto_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME goto_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp)
RUN(NAME goto_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp)
RUN(NAME goto_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp)
RUN(NAME goto_06 LABELS gfortran llvm c cpp EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME goto_07 LABELS gfortran llvm)
RUN(NAME goto_08 LABELS gfortran llvm c cpp)
RUN(NAME goto_09 LABELS gfortran llvm)

RUN(NAME subroutines_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm mlir fortran)
RUN(NAME subroutines_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm fortran)
RUN(NAME subroutines_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME subroutines_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME subroutines_06 LABELS gfortran llvm)
RUN(NAME subroutines_07 LABELS gfortran llvm)
RUN(NAME subroutines_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME subroutines_09 LABELS gfortran llvm)
RUN(NAME subroutines_10 LABELS gfortran)
RUN(NAME subroutines_11 LABELS gfortran llvm fortran)
RUN(NAME subroutines_12 LABELS gfortran llvm fortran)
RUN(NAME subroutines_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME subroutines_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays fortran)
RUN(NAME subroutines_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME subroutines_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME subroutines_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME subroutines_18 LABELS gfortran llvm)
RUN(NAME subroutines_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME subroutines_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME subroutines_21 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME subroutines_22 LABELS gfortran llvm)
RUN(NAME subroutines_23 LABELS gfortran llvm) # local array bound given by a host-associated array element (#4648)

RUN(NAME functions_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp x86 wasm mlir fortran)
RUN(NAME functions_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME functions_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME functions_06 LABELS gfortran llvm)
RUN(NAME functions_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_09 LABELS gfortran llvm fortran)
RUN(NAME functions_10 LABELS gfortran llvm)
RUN(NAME functions_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME functions_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME functions_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME functions_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_16 LABELS gfortran llvm)
RUN(NAME functions_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --fixed-form)
RUN(NAME functions_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH)
RUN(NAME functions_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_33 LABELS gfortran llvm)
RUN(NAME functions_34 LABELS gfortran llvm)
RUN(NAME functions_35 LABELS gfortran llvm)
RUN(NAME functions_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_length_return_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-interface)
RUN(NAME functions_41 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_42 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_43 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_44 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_45 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_46 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME functions_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME functions_50 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_51 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_52 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_53 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME functions_55 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME functions_56 LABELS gfortran llvm EXTRAFILES functions_56_mod.f90 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME functions_57 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME functions_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_61 LABELS gfortran llvm fortran)
RUN(NAME functions_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_63 LABELS gfortran llvm)
RUN(NAME functions_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME functions_65 LABELS gfortran llvm)
RUN(NAME functions_66 LABELS gfortran llvm)
RUN(NAME functions_67 LABELS gfortran llvm)
RUN(NAME functions_68 LABELS gfortran llvm) # automatic array result sized by a spread actual argument (#15333)
RUN(NAME functions_69 LABELS llvm flang) # function result not returned into a variable the function reads (#16191); not gfortran: GFortran 16.2 returns it into a module variable the function reads
RUN(NAME functions_70 LABELS llvm) # function result not returned into a variable an internal procedure argument reads (#16191); not gfortran: GFortran 16.2 returns it into the variable; not flang: Flang on arm64 macOS cannot pass an internal procedure as an actual argument
RUN(NAME functions_71 LABELS llvm) # procedure-pointer actuals can read the result-assignment target (#16191); not gfortran: GFortran 16.2 writes the target early; not flang: internal procedure actuals unsupported on arm64 macOS
RUN(NAME functions_72 LABELS llvm) # callback carriers and transitive dispatch (#16191); not gfortran: GFortran 16.2 writes the target early; not flang: internal procedure actuals unsupported on arm64 macOS
RUN(NAME functions_73 LABELS gfortran llvm)
RUN(NAME functions_74 LABELS gfortran llvm) # explicit-shape results sized by size() of a dummy, internal function result inside matmul (#2767)

RUN(NAME common_01 LABELS gfortran)


RUN(NAME types_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME types_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME types_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME types_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME types_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME types_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)

# GFortran + LFortran C++
RUN(NAME doconcurrentloop_01 LABELS gfortran cpp)
RUN(NAME doconcurrentloop_03 LABELS llvm llvm_wasm llvm_wasm_emcc fortran) # type-spec in concurrent-header is not yet implemented by gfortran.

RUN(NAME arrays_01 LABELS gfortran cpp llvm llvmStackArray wasm)
RUN(NAME arrays_01_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_02_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_03_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_04_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran c cpp)
RUN(NAME arrays_05_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_06_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_07_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_08_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_09_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_10_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_11_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_12_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_13_size LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_14_size LABELS gfortran llvm)
RUN(NAME matrix_01_transpose LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME matrix_02_matmul LABELS gfortran fortran)
RUN(NAME matrix_03_transpose_param LABELS gfortran llvm)
RUN(NAME array_01_pack LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_01_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_02_pack LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_03_pack LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_04_pack LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_05_pack LABELS gfortran llvm)
RUN(NAME array_06_pack LABELS gfortran llvm)
RUN(NAME array_02_transfer LABELS gfortran)
RUN(NAME array_03_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_04_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_05_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_06_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_07_transfer LABELS gfortran llvm)
RUN(NAME array_08_transfer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_04_all LABELS gfortran fortran)
RUN(NAME arrays_01_real LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_01_complex LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME block_data_01 LABELS llvm gfortran)
RUN(NAME block_data_02 LABELS llvm gfortran)
RUN(NAME block_data_complex LABELS llvm gfortran)
RUN(NAME block_data_string_01 LABELS llvm gfortran)
RUN(NAME block_data_string_02 LABELS llvm gfortran)
RUN(NAME block_data_string_03 LABELS llvm gfortran)
RUN(NAME block_data_string_04 LABELS llvm gfortran)
RUN(NAME block_data_string_05 LABELS llvm gfortran)
RUN(NAME block_data_string_06 LABELS llvm gfortran)
RUN(NAME block_data_03 LABELS llvm gfortran)
RUN(NAME block_data_04 LABELS llvm gfortran)
RUN(NAME arrays_01_logical LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME block_data_parameter_01 LABELS gfortran llvmImplicit)
RUN(NAME byte_type_01 LABELS gfortran llvm)
RUN(NAME byte_type_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME arrays_01_multi_dim LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME integer_bin_op_dim_external_module LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
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 array_bound_5 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_bound_6 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays fortran)
RUN(NAME array_bound_7 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME array_bound_8 LABELS gfortran llvm) # parameter-array element as array bound
RUN(NAME array_bound_9 LABELS gfortran llvm) # component or array element as assumed-shape lower bound
RUN(NAME array_bound_10 LABELS gfortran llvm)
RUN(NAME array_bound_11 LABELS gfortran llvm) # type-bound call as explicit-shape dummy bound
RUN(NAME array_bound_12 LABELS gfortran llvm)
RUN(NAME array_bound_13 LABELS gfortran llvm) # allocatable or pointer bound read through a getter
RUN(NAME array_bound_14 LABELS gfortran llvm) # allocatable integer scalar as a bound
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)
RUN(NAME arrays_op_4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_5 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_6 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_7 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_8 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_9 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray
     EXTRA_ARGS --realloc-lhs-arrays fortran)
RUN(NAME arrays_op_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_op_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_op_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrays_op_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray
    EXTRA_ARGS --realloc-lhs-arrays fortran)
RUN(NAME arrays_op_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_op_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_op_31 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_op_32 LABELS gfortran llvm)
RUN(NAME arrays_op_33 LABELS gfortran llvm)
RUN(NAME arrays_reshape_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrays_reshape_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray NO_STD_F23)
RUN(NAME arrays_reshape_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_reshape_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_reshape_33 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_reshape_34 LABELS gfortran llvm)
RUN(NAME arrays_reshape_35 LABELS gfortran llvm)
RUN(NAME arrays_reshape_36 LABELS gfortran llvm)
RUN(NAME arrays_reshape_37 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_reshape_38 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_reshape_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_reshape_40 LABELS gfortran llvm)
RUN(NAME arrays_reshape_41 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_reshape_42 LABELS gfortran llvm)
RUN(NAME arrays_reshape_43 LABELS gfortran llvm)
RUN(NAME arrays_reshape_44 LABELS gfortran llvm)
RUN(NAME arrays_reshape_45 LABELS llvm) # gfortran segfaults on reshape () of polymorphic allocatable array
RUN(NAME arrays_reshape_46 LABELS gfortran llvm)
RUN(NAME arrays_reshape_47 LABELS gfortran llvm)
RUN(NAME arrays_reshape_48 LABELS gfortran llvm)
RUN(NAME arrays_reshape_49 LABELS gfortran llvm)
RUN(NAME arrays_reshape_50 LABELS gfortran llvm)
RUN(NAME arrays_reshape_51 LABELS gfortran llvm)
RUN(NAME arrays_reshape_52 LABELS gfortran llvm)
RUN(NAME arrays_reshape_53 LABELS gfortran llvm)
RUN(NAME arrays_reshape_54 LABELS gfortran llvm)
RUN(NAME arrays_reshape_55 LABELS gfortran llvm) # reshape of a function result of a reshape, plus array arithmetic (#11004)
RUN(NAME arrays_reshape_56 LABELS gfortran llvm) # reshape whose shape argument is a reshape() call (#4649)
RUN(NAME arrays_reshape_57 LABELS gfortran llvm) # shape of a reshape of an array constant (#3520)
RUN(NAME arrays_reshape_58 LABELS gfortran llvm) # reshape of an automatic array into an assumed-shape dummy (#5663)
RUN(NAME arrays_reshape_59 LABELS gfortran llvm) # integer(8) rank-2 initializer from reshape of a default-kind constructor (#5284)
RUN(NAME array_reshape_pad_01 LABELS gfortran llvm)
RUN(NAME arrays_elemental_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_elemental_16 LABELS gfortran llvm)
RUN(NAME arrays_03_func LABELS gfortran cpp llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_03_func_pass_arr_dims LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_04_func LABELS gfortran cpp llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_04_func_pass_arr_dims LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_18_func LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrays_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrays_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrays_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME arrays_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran NO_STD_F23) # 'n' is used before it is typed under implicit none, an extension
RUN(NAME arrays_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray llvm_integer_8) # maxloc, minloc
RUN(NAME arrays_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray llvm_integer_8) # maxloc
RUN(NAME arrays_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran) # init expr with fixed size arr as dependency
RUN(NAME arrays_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES arrays_50_mod.f90)
RUN(NAME arrays_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME arrays_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_65 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_68 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_69 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_72 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_73 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_75 LABELS gfortran llvm)
RUN(NAME arrays_76 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_77 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_78 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_79 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_80 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_81 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_82 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_83 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_84 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_85 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_86 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_87 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_88 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_89 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_90 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_91 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_92 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_93 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_94 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_95 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_96 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_97 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_98 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_99 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_100 LABELS gfortran llvm)
RUN(NAME arrays_101 LABELS gfortran llvm)
RUN(NAME arrays_102 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_103 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_104 LABELS gfortran llvm)
RUN(NAME arrays_105 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_106 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_107 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --legacy-array-sections)
RUN(NAME arrays_108 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_109 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_110 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_111 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_112 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_113 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_114 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_115 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_116 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_117 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_118 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_119 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_120 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME arrays_121 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_122 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_123 LABELS gfortran llvm)
RUN(NAME arrays_130 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_of_strings_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_of_strings_02 LABELS gfortran llvm)
RUN(NAME arrays_124 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_125 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME arrays_126 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_128 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_131 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_132 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrays_133 LABELS gfortran llvm EXTRAFILES arrays_133_mod.f90 arrays_133b.f90 arrays_133c.f90) # bound getters in two object files link (#14542)
RUN(NAME arrays_134 LABELS gfortran llvm) # size() of an explicit-shape dummy with an integer(8) extent
RUN(NAME arrays_135 LABELS gfortran llvm llvmStackArray) # loops over 16-byte aligned stack arrays, promoted allocatables under --fast
RUN(NAME arrays_136 LABELS gfortran llvm) # explicit-shape dummies with integer(int64) and integer(2) extents, int8 element to default integer (#7609)
RUN(NAME arrays_137 LABELS gfortran llvm) # list-directed write of real arrays with vector subscripts (#3695)
RUN(NAME arrays_138 LABELS gfortran llvm) # local array with huge(0) elements (#6508)
RUN(NAME arrays_139 LABELS gfortran llvm) # local array of 1e7 elements must not overflow the stack (#5427)

# DISABLED: #8115 - ICE: get_struct_sym_from_struct_expr returns nullptr for empty struct array constructors [tp ::]
# RUN(NAME array_init LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assumed_rank_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
COMPILE(NAME assumed_rank_12 COMPILERS gfortran llvm llvm_wasm) # move to RUN with llvm once assumed-size -> assumed-rank codegen is supported (#11851)

RUN(NAME assumed_rank_14 LABELS gfortran llvm)
RUN(NAME assumed_rank_15 LABELS gfortran llvm)
RUN(NAME assumed_rank_16 LABELS gfortran llvm)
RUN(NAME assumed_rank_17 LABELS gfortran llvm)
RUN(NAME assumed_rank_18 LABELS gfortran llvm)
RUN(NAME assumed_rank_19 LABELS gfortran llvm)
RUN(NAME assumed_rank_20 LABELS gfortran llvm)
RUN(NAME assumed_rank_21 LABELS gfortran llvm)
RUN(NAME assumed_rank_22 LABELS gfortran llvm)
RUN(NAME optional_procedure_dummy_01 LABELS gfortran llvm)
RUN(NAME assumed_rank_23 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME assumed_rank_24 LABELS gfortran llvm)
RUN(NAME assumed_rank_25 LABELS gfortran llvm)
RUN(NAME assumed_rank_26 LABELS gfortran llvm)
RUN(NAME assumed_rank_27 LABELS gfortran llvm)
RUN(NAME assumed_rank_28 LABELS gfortran llvm) # scalar named constant passed to an assumed-rank dummy (#5685)
RUN(NAME assume_rank_shape_product_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME select_rank_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME select_rank_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME select_rank_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME select_rank_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_pointer_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_rank_27 LABELS gfortran llvm)
RUN(NAME select_rank_28 LABELS gfortran llvm)
RUN(NAME select_rank_29 LABELS gfortran llvm)
RUN(NAME select_rank_30 LABELS gfortran llvm)
RUN(NAME select_rank_31 LABELS gfortran llvm)
RUN(NAME select_rank_32 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME select_rank_33 LABELS gfortran llvm)
RUN(NAME select_rank_34 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME select_rank_35 LABELS gfortran llvm)
RUN(NAME select_rank_36 LABELS gfortran llvm)
RUN(NAME select_rank_37 LABELS gfortran llvm)
RUN(NAME select_rank_38 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME select_rank_39 LABELS gfortran llvm)
RUN(NAME select_rank_40 LABELS gfortran llvm)
RUN(NAME select_rank_41 LABELS gfortran llvm)
RUN(NAME select_rank_42 LABELS gfortran llvm)
RUN(NAME select_rank_43 LABELS gfortran llvm)
RUN(NAME select_rank_44 LABELS gfortran llvm)
RUN(NAME select_rank_45 LABELS gfortran llvm)

RUN(NAME global_allocatable_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME global_allocatable_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME global_array_pointer_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME global_array_pointer_02 LABELS gfortran llvm)
RUN(NAME global_array_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME global_init_01 LABELS gfortran llvm)
RUN(NAME global_init_02 LABELS gfortran llvm)
RUN(NAME global_init_03 LABELS gfortran llvm)
RUN(NAME global_init_04 LABELS llvm)
RUN(NAME global_init_05 LABELS gfortran llvm)
RUN(NAME global_init_06 LABELS gfortran llvm EXTRAFILES global_init_06_m.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME global_init_07 LABELS gfortran llvm)
RUN(NAME pointer_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_03 LABELS gfortran llvm fortran)
RUN(NAME pointer_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME pointer_11 LABELS gfortran llvm fortran)
RUN(NAME pointer_12 LABELS gfortran llvm fortran)
RUN(NAME pointer_13 LABELS gfortran llvmImplicit)
RUN(NAME pointer_14 LABELS gfortran llvm)
RUN(NAME pointer_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME pointer_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME pointer_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME pointer_18 LABELS gfortran llvm)
RUN(NAME pointer_19 LABELS gfortran llvm)
RUN(NAME pointer_20 LABELS gfortran llvm)
RUN(NAME pointer_21 LABELS gfortran llvm)
RUN(NAME pointer_22 LABELS gfortran llvm) # allocate a host-associated pointer array in a contained subroutine (#4506)
RUN(NAME pointer_23 LABELS gfortran llvm) # NULL() pointer assignment to rank-6 module array pointers (#4674)
RUN(NAME pointer_section_01 LABELS gfortran llvm)
RUN(NAME pointer_section_02 LABELS gfortran llvm)
RUN(NAME pointer_section_03 LABELS gfortran llvm)
RUN(NAME pointer_section_04 LABELS gfortran llvm)
RUN(NAME pointer_section_05 LABELS gfortran llvm)
RUN(NAME pointer_section_06 LABELS gfortran llvm)
RUN(NAME pointer_section_07 LABELS gfortran llvm)
RUN(NAME pointer_section_08 LABELS llvm)
RUN(NAME pointer_section_09 LABELS gfortran llvm)
RUN(NAME pointer_section_10 LABELS gfortran llvm)
RUN(NAME pointer_function_result_01 LABELS gfortran llvm)

RUN(NAME array_section_is_non_allocatable LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_indices_array_section LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_indices_array_section_assignment LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
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 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_constructor_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_constructor_04 LABELS gfortran llvm fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_constructor_05 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_constructor_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_constructor_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_constructor_08 LABELS gfortran llvm)
RUN(NAME array_constructor_09 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_constructor_10 LABELS gfortran llvm EXTRAFILES array_constructor_10_mod.f90)
RUN(NAME array_constructor_11 LABELS gfortran llvm) # section elements with integer(8) bounds
RUN(NAME array_constructor_12 FILE array_constructor_11 LABELS llvm EXTRA_ARGS --descriptor-index-64)
RUN(NAME array_constructor_13 LABELS gfortran llvm EXTRA_ARGS --descriptor-index-64 --realloc-lhs-arrays) # run-time-sized elements next to scalars
RUN(NAME array_constructor_14 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 --realloc-lhs-arrays GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME array_constructor_15 LABELS gfortran llvm) # implied-do with non-default integer bounds
RUN(NAME array_constructor_16 LABELS gfortran llvm EXTRA_ARGS --descriptor-index-64)
RUN(NAME array_constructor_17 FILE array_constructor_15 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME allocatble_c_ptr LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME hashmap_struct_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME hashmap_nested_dealloc_derived_pointer LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME hashmap_derived_pointer_associated LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME call_subroutine_without_type LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c)
RUN(NAME call_subroutine_without_type_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)

# GFortran
RUN(NAME arrays_02 LABELS gfortran llvm fortran)
RUN(NAME arrays_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_08_func LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_08_func_pass_arr_dims LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm fortran)
RUN(NAME arrays_09 LABELS gfortran llvm fortran)
RUN(NAME arrays_10 LABELS gfortran llvm fortran)
RUN(NAME arrays_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray cpp fortran)
RUN(NAME arrays_12 LABELS gfortran fortran) # constant arrays
RUN(NAME arrays_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # constant arrays
RUN(NAME arrays_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)

RUN(NAME arrays_inputs_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # constant arrays
RUN(NAME arrays_inputs_16 LABELS gfortran llvm c)
RUN(NAME arrays_16_func LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)

RUN(NAME arrays_intrin_01 LABELS gfortran llvm fortran) # minval, maxval
RUN(NAME arrays_intrin_02 LABELS gfortran fortran) # all, any
RUN(NAME arrays_intrin_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # maxval
RUN(NAME arrays_intrin_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # maxval
RUN(NAME arrays_intrin_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # minval
RUN(NAME arrays_intrin_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # minval
RUN(NAME arrays_intrin_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran) # min
RUN(NAME arrays_intrin_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME arrays_intrin_09 LABELS gfortran llvm fortran) # any/count logical mask
RUN(NAME any_01 LABELS gfortran fortran)
RUN(NAME any_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME any_03 LABELS gfortran llvm fortran)
RUN(NAME sum_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sum_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sum_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sum_04 LABELS gfortran llvm)
RUN(NAME sum_05 LABELS gfortran llvm)
RUN(NAME sum_06 LABELS gfortran llvm)
RUN(NAME sum_07 LABELS gfortran llvm)
RUN(NAME sum_08 LABELS gfortran llvm)
RUN(NAME sum_09 LABELS llvm)
RUN(NAME sum_10 LABELS gfortran llvm)
RUN(NAME sum_11 LABELS gfortran llvm NO_FAST_MATH)
RUN(NAME reductions_hadd_01 LABELS gfortran llvm)
RUN(NAME reductions_hadd_02 LABELS gfortran llvm)
RUN(NAME reductions_hadd_03 LABELS gfortran llvm)
RUN(NAME gpu_scalar_reduction_actual_01 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME gpu_elemental_reduction_01 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME gpu_private_reduction_01 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME gpu_private_reduction_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_private_map_forwarding_01 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME gpu_residue_unroll_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_residue_unroll_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_residue_unroll_03 FAIL LABELS gfortran llvm metal cuda)
RUN(NAME gpu_integer_powers_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_guard_fold_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_guard_fold_02 FAIL LABELS gfortran llvm metal cuda) # stops: a part of 4 fails the check
RUN(NAME gpu_inline_loop_calls_01 LABELS gfortran llvm metal cuda)
RUN(NAME dot_product_01 LABELS gfortran llvm)
RUN(NAME intrinsic_reduce_01 LABELS llvm GFORTRAN_ARGS -std=f2018)
RUN(NAME intrinsic_reduce_derived_type_01 LABELS llvm)
RUN(NAME product_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME product_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME product_03 LABELS gfortran llvm)

#gfortran 11-12 does not support reduce()
RUN(NAME reduce_01 LABELS  llvm llvm_wasm llvm_wasm_emcc) 
RUN(NAME reduce_02 LABELS  llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME reduce_03 LABELS  llvm llvm_wasm llvm_wasm_emcc )

RUN(NAME reserved_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME reserved_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME reserved_03 LABELS gfortran llvm fortran c cpp)

RUN(NAME namelist_01 LABELS gfortran llvm fortran)
RUN(NAME namelist_02 LABELS gfortran llvm fortran)
RUN(NAME namelist_03 LABELS gfortran llvm fortran)
RUN(NAME namelist_04 LABELS gfortran llvm fortran)
RUN(NAME namelist_05 LABELS gfortran llvm fortran)
RUN(NAME namelist_06 LABELS gfortran llvm fortran)
RUN(NAME namelist_07 LABELS gfortran llvm fortran)
RUN(NAME namelist_08 LABELS gfortran llvm fortran)
RUN(NAME namelist_09 LABELS gfortran llvm fortran)
RUN(NAME namelist_10 LABELS gfortran llvm fortran)
RUN(NAME namelist_11 LABELS gfortran llvm fortran)
RUN(NAME namelist_12 LABELS gfortran llvm EXTRA_ARGS --cpp GFORTRAN_ARGS -cpp)
RUN(NAME namelist_13 LABELS gfortran llvm EXTRAFILES namelist_13_module.f90)
RUN(NAME namelist_14 LABELS gfortran llvm)
RUN(NAME namelist_15 LABELS gfortran llvm)
RUN(NAME namelist_16 LABELS gfortran llvm)
RUN(NAME namelist_17 LABELS gfortran llvm)
RUN(NAME namelist_18 LABELS gfortran llvm)
RUN(NAME namelist_19 LABELS gfortran llvm)
RUN(NAME namelist_20 LABELS gfortran llvm)
RUN(NAME namelist_21 LABELS gfortran llvm)
RUN(NAME namelist_22 LABELS gfortran llvm)
RUN(NAME namelist_23 LABELS gfortran llvm)
RUN(NAME namelist_24 LABELS gfortran llvm)
RUN(NAME namelist_25 LABELS gfortran llvm)
RUN(NAME namelist_26 LABELS gfortran llvm)
RUN(NAME namelist_27 LABELS gfortran llvm)
RUN(NAME namelist_28 LABELS gfortran llvm)
RUN(NAME namelist_29 LABELS gfortran llvm)
RUN(NAME namelist_30 LABELS gfortran llvm)
RUN(NAME namelist_31 LABELS gfortran llvm)
RUN(NAME namelist_32 LABELS gfortran llvm)
RUN(NAME namelist_33 LABELS gfortran llvm)
RUN(NAME namelist_34 LABELS gfortran llvm)

RUN(NAME namelist_35 LABELS gfortran llvm)
RUN(NAME namelist_36 LABELS gfortran llvm)
RUN(NAME namelist_37 LABELS gfortran llvm)
RUN(NAME namelist_38 LABELS gfortran llvm)
RUN(NAME namelist_39 LABELS llvm) # Test in not compatible with gfortran 13.0 used at CI
RUN(NAME namelist_40 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME namelist_41 LABELS gfortran llvm)
RUN(NAME namelist_42 LABELS llvm) # GFortran 15 mishandles namelist arrays of extended types
RUN(NAME namelist_43 LABELS gfortran llvm)
RUN(NAME namelist_44 LABELS gfortran llvm)
RUN(NAME namelist_45 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # implicitly typed namelist object in an internal subroutine (#12375)
RUN(NAME namelist_iomsg_01 LABELS gfortran llvm)
RUN(NAME nested_namelist_01 LABELS gfortran llvm)
RUN(NAME nested_namelist_02 LABELS gfortran llvm)
RUN(NAME nested_namelist_03 LABELS gfortran llvm)

RUN(NAME format_quotes_01 LABELS gfortran llvm)

RUN(NAME list_directed_stdin_eof_01 LABELS gfortran llvm COPY_TO_BIN list_directed_stdin_eof_01_data.txt)
RUN(NAME read_list_directed_no_newline_01 LABELS gfortran llvm)

RUN(NAME format_01 LABELS gfortran llvm fortran)
RUN(NAME format_02 LABELS gfortran llvm fortran)
RUN(NAME format_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_08s LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME format_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME format_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_65 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME format_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_68 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_69 LABELS gfortran llvm)

RUN(NAME format_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_72 LABELS gfortran llvm)

RUN(NAME format_73 LABELS gfortran llvm)
RUN(NAME format_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_75 LABELS gfortran llvm)
RUN(NAME format_76 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_77 LABELS gfortran llvm)
RUN(NAME format_78 LABELS gfortran llvm)
RUN(NAME format_79 LABELS gfortran llvm)
RUN(NAME format_80 LABELS gfortran llvm)
RUN(NAME format_81 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME format_82 LABELS gfortran llvm)
RUN(NAME format_83 LABELS gfortran llvm)
RUN(NAME format_84 LABELS gfortran llvm)
RUN(NAME format_85 LABELS gfortran llvm)
RUN(NAME format_86 LABELS gfortran llvm)
RUN(NAME format_87 LABELS llvm)
RUN(NAME format_88 LABELS gfortran llvm)
RUN(NAME format_89 LABELS gfortran llvm)
RUN(NAME format_90 LABELS gfortran llvm)
RUN(NAME format_91 LABELS gfortran llvm)
RUN(NAME format_92 LABELS gfortran llvm)
RUN(NAME format_93 LABELS gfortran llvm)
RUN(NAME format_98 LABELS gfortran llvm)
RUN(NAME format_99 LABELS gfortran llvm)
RUN(NAME format_100 LABELS gfortran llvm)
RUN(NAME format_101 LABELS gfortran llvm)
RUN(NAME format_102 LABELS gfortran llvm)
RUN(NAME format_103 LABELS gfortran llvm)
RUN(NAME format_104 LABELS gfortran llvm)
RUN(NAME format_105 LABELS gfortran llvm)
RUN(NAME format_106 LABELS gfortran llvm)
RUN(NAME format_107 LABELS gfortran llvm)
RUN(NAME format_108 LABELS gfortran llvm)
RUN(NAME format_109 LABELS gfortran llvm)
RUN(NAME format_110 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME format_111 LABELS gfortran llvm)
RUN(NAME format_112 LABELS gfortran llvm)
# format_113 needs real(10) with more than double precision, which only x86-64
# Linux has: on Apple arm64 real(10) constants and real(10) output are only as
# precise as a double (https://github.com/lfortran/lfortran/issues/17203), and
# on Windows and aarch64 Linux the generated code and the runtime disagree on
# how a real(10) value is stored:
# https://github.com/lfortran/lfortran/issues/13935
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
    RUN(NAME format_113 LABELS gfortran llvm)
endif()
RUN(NAME format_114 LABELS gfortran llvm)
RUN(NAME format_115 LABELS gfortran llvm)
RUN(NAME format_116 LABELS gfortran llvm)
RUN(NAME format_117 LABELS gfortran llvm)
RUN(NAME format_118 LABELS gfortran llvm)
RUN(NAME format_119 LABELS gfortran llvm)
RUN(NAME format_120 LABELS gfortran llvm) # trim() in an implied-DO output list with T and colon editing (#11408)
# GFortran 16 lacks the F2023 LZ/LZP/LZS descriptors (13.8.5).
RUN(NAME format_leading_zero LABELS llvm)
RUN(NAME submodule_01 LABELS gfortran)
RUN(NAME submodule_02 LABELS gfortran fortran)
RUN(NAME submodule_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME submodule_16 LABELS gfortran llvm)
RUN(NAME submodule_17 LABELS gfortran llvm)
RUN(NAME submodule_18a LABELS gfortran llvm_submodule EXTRAFILES submodule_18b.f90 submodule_18c.f90)
RUN(NAME submodule_19a LABELS gfortran llvm_submodule EXTRAFILES submodule_19b.f90 submodule_19c.f90)
RUN(NAME submodule_20a LABELS gfortran llvm_submodule EXTRAFILES submodule_20b.f90 submodule_20c.f90)
RUN(NAME submodule_21a LABELS gfortran llvm_submodule EXTRAFILES submodule_21b.f90 submodule_21c.f90)

RUN(NAME submodule_22 LABELS gfortran llvm)
RUN(NAME submodule_23a LABELS gfortran llvm_submodule EXTRAFILES submodule_23b.f90 submodule_23c.f90)
RUN(NAME submodule_24 LABELS gfortran llvm)
RUN(NAME submodule_25a LABELS gfortran llvm_submodule EXTRAFILES submodule_25b.f90 submodule_25c.f90)
RUN(NAME submodule_26 LABELS gfortran llvm)
RUN(NAME submodule_27a LABELS gfortran llvm_submodule EXTRAFILES submodule_27b.f90 submodule_27c.f90)
RUN(NAME submodule_28 LABELS gfortran llvm)
RUN(NAME submodule_29a LABELS gfortran llvm_submodule EXTRAFILES submodule_29b.f90 submodule_29c.f90 submodule_29d.f90)
RUN(NAME submodule_30a LABELS gfortran llvm_submodule EXTRAFILES submodule_30b.f90 submodule_30c.f90 submodule_30d.f90)
RUN(NAME submodule_31 LABELS gfortran llvm)
RUN(NAME submodule_32 LABELS gfortran llvm)
RUN(NAME submodule_33 LABELS gfortran llvm)
RUN(NAME submodule_34a LABELS gfortran llvm_submodule EXTRAFILES submodule_34b.f90)
RUN(NAME submodule_35 LABELS gfortran llvm) # submodule function via interface

RUN(NAME submodule_36 LABELS gfortran llvm)
RUN(NAME submodule_37a LABELS gfortran llvm_submodule EXTRAFILES submodule_37b.f90 submodule_37c.f90 submodule_37d.f90 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME submodule_38a LABELS gfortran llvm_submodule EXTRAFILES submodule_38b.f90 submodule_38c.f90 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME submodule_39a LABELS gfortran llvm_submodule EXTRAFILES submodule_39b.f90 submodule_39c.f90 EXTRA_ARGS --realloc-lhs-arrays)

RUN(NAME submodule_40a LABELS gfortran llvm_submodule EXTRAFILES submodule_40b.f90 submodule_40c.f90 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME submodule_41 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME submodule_42 LABELS gfortran llvm)
RUN(NAME submodule_43 LABELS gfortran llvm)
RUN(NAME submodule_44a LABELS gfortran llvm_submodule EXTRAFILES submodule_44b.f90)
RUN(NAME c_sizeof_02 LABELS gfortran llvm)
RUN(NAME c_sizeof_03 LABELS gfortran llvm)
RUN(NAME c_sizeof_04 LABELS gfortran llvm)
RUN(NAME c_sizeof_05 LABELS gfortran llvm)
RUN(NAME c_sizeof_06 LABELS gfortran llvm)
RUN(NAME c_sizeof_07 LABELS gfortran llvm)
RUN(NAME c_associated_01 LABELS gfortran llvm)
RUN(NAME c_associated_02 LABELS gfortran llvm)
RUN(NAME sizeof_01 LABELS gfortran llvm)
RUN(NAME iso_c_binding_04 LABELS gfortran llvm)
RUN(NAME submodule_45 LABELS gfortran llvm)
RUN(NAME submodule_46 LABELS gfortran llvm)
RUN(NAME submodule_47 LABELS gfortran llvm)
RUN(NAME submodule_48 LABELS gfortran llvm)
RUN(NAME submodule_49 LABELS gfortran llvm)
RUN(NAME submodule_50a LABELS gfortran llvm_submodule EXTRAFILES submodule_50b.f90 submodule_50c.f90)
RUN(NAME submodule_51a LABELS gfortran llvm_submodule EXTRAFILES submodule_51b.f90)
RUN(NAME submodule_52 LABELS gfortran llvm)
RUN(NAME submodule_53a LABELS gfortran llvm_submodule EXTRAFILES submodule_53b.f90)
RUN(NAME submodule_54 LABELS gfortran llvm)
RUN(NAME submodule_55 LABELS gfortran llvm)
RUN(NAME submodule_56 LABELS gfortran llvm)
RUN(NAME submodule_57 LABELS gfortran llvm)
RUN(NAME submodule_58 LABELS gfortran llvm)
RUN(NAME submodule_59 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # IMPLICIT of a submodule ends with it
RUN(NAME submodule_60 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # IMPLICIT of a separate module procedure
RUN(NAME submodule_61 LABELS gfortran llvm) # private binding to a separate module procedure declared in a named generic interface (#5393)
RUN(NAME procedure_pointer_12 LABELS gfortran llvm)
RUN(NAME procedure_pointer_13 LABELS gfortran llvm)
RUN(NAME procedure_pointer_14 LABELS gfortran llvm)
RUN(NAME procedure_pointer_15 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_16 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_17 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_18 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_19 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_20 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_21 LABELS gfortran llvm)
RUN(NAME procedure_pointer_22 LABELS gfortran llvm)
RUN(NAME procedure_pointer_23 LABELS gfortran llvm)
RUN(NAME procedure_pointer_24 LABELS gfortran llvm)
RUN(NAME procedure_pointer_25 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_26 LABELS gfortran llvm EXTRAFILES procedure_pointer_26_mod.f90 EXTRA_ARGS --implicit-interface)
RUN(NAME procedure_pointer_27 LABELS gfortran llvm)
RUN(NAME procedure_pointer_28 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
# GFortran rejects a procedure as the value of a procedure pointer component
# in a structure constructor that initializes a variable or named constant,
# which the standard allows, so the following tests are llvm only
RUN(NAME procedure_pointer_29 LABELS llvm)
RUN(NAME procedure_pointer_30 LABELS llvm)
RUN(NAME procedure_pointer_31 LABELS llvm)
RUN(NAME procedure_pointer_32 LABELS llvm)
RUN(NAME procedure_pointer_34 LABELS llvm)
# GFortran also rejects the circular declarations of this dispatch table:
# `table` gives it `a` before `a` is defined, which it reports as a procedure
# used as an actual argument without an explicit interface or EXTERNAL
RUN(NAME procedure_pointer_33 LABELS llvm)
# Templates are not supported by GFortran
RUN(NAME procedure_pointer_35 LABELS llvm)
RUN(NAME procedure_pointer_36 LABELS gfortran llvm)
# Templates are not supported by GFortran, and it takes the host's `later`
# instead of the internal procedure `later` of `shadowed`
RUN(NAME procedure_pointer_37 LABELS llvm)
RUN(NAME procedure_pointer_38 LABELS gfortran llvm)
RUN(NAME procedure_pointer_39 LABELS gfortran llvm)
RUN(NAME procedure_pointer_40 LABELS llvm) # gfortran 13 at CI rejects procedure targets in initializer structure constructors
# GFortran 13 at CI rejects procedure targets in initializer structure
# constructors; GFortran 16 also rejects calling the nopass type-bound
# function `os(1)%m(6)` of a named constant array element ("Operands of
# comparison operator '/=' ... are TYPE(pc)/INTEGER(4)")
RUN(NAME procedure_pointer_41 LABELS llvm)
RUN(NAME procedure_pointer_42 LABELS gfortran llvm)
RUN(NAME procedure_pointer_43 LABELS gfortran llvm)
RUN(NAME procedure_pointer_44 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # reassociation of pointers without explicit interface (#16414)
RUN(NAME procedure_pointer_45 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # same, with components (#16414)
RUN(NAME procedure_pointer_46 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # same, external pointers with implicitly typed results (#16414)
RUN(NAME procedure_pointer_47 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # components referenced in implied do loops (#16414)
RUN(NAME procedure_pointer_48 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --implicit-typing) # implicit result type of the declaring scope (#16414)
RUN(NAME procedure_pointer_49 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # typed pointer passed to an external dummy (#16414)
RUN(NAME procedure_pointer_50 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --implicit-typing) # implicit result type in an internal procedure of a program (#16414)
RUN(NAME bindc_assumed_rank_01 LABELS gfortran llvm)


RUN(NAME floor_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # floor body
RUN(NAME floor_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # floor symboltable
RUN(NAME floor_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)

RUN(NAME modulo_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME modulo_02 LABELS gfortran llvm)

RUN(NAME int_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # int body
RUN(NAME int_02 LABELS gfortran wasm fortran) # int symboltable
RUN(NAME int_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # large int and prints array

RUN(NAME intrinsics_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sqrt, abs, log
RUN(NAME intrinsics_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sin
RUN(NAME intrinsics_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cos
RUN(NAME intrinsics_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # tan
RUN(NAME intrinsics_04s LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ctan
RUN(NAME intrinsics_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # hyperbolics
RUN(NAME intrinsics_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # inverse trignometric
RUN(NAME intrinsics_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # kind
RUN(NAME intrinsics_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # tiny symboltable
RUN(NAME intrinsics_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # tiny body
RUN(NAME intrinsics_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # real body
RUN(NAME intrinsics_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # real symboltable
RUN(NAME intrinsics_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # kind body
RUN(NAME intrinsics_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # kind symboltable
RUN(NAME intrinsics_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # selected_real,int_kind body
RUN(NAME intrinsics_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # real
RUN(NAME intrinsics_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # aimag
RUN(NAME intrinsics_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # exp, log, erf
RUN(NAME intrinsics_17b LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran) # log
RUN(NAME intrinsics_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trig
RUN(NAME intrinsics_18c LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trig
RUN(NAME intrinsics_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # multiple intrinsics
RUN(NAME intrinsics_19c LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # exp, log, sqrt
RUN(NAME intrinsics_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trig
RUN(NAME intrinsics_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # modulo and mod
RUN(NAME intrinsics_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # min, max
RUN(NAME intrinsics_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # huge
RUN(NAME intrinsics_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # System_clock
RUN(NAME intrinsics_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ishft
RUN(NAME intrinsics_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # btest
RUN(NAME intrinsics_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shape
RUN(NAME intrinsics_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # min, max
RUN(NAME intrinsics_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # random_number
RUN(NAME intrinsics_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # range
RUN(NAME intrinsics_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # ceiling
RUN(NAME intrinsics_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # merge
RUN(NAME intrinsics_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # new_line
RUN(NAME intrinsics_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm) # epsilon refer: #5222
RUN(NAME intrinsics_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # any
RUN(NAME intrinsics_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # adjustl
RUN(NAME intrinsics_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # merge
RUN(NAME intrinsics_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # adjustr
RUN(NAME intrinsics_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # date_and_time
RUN(NAME intrinsics_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # aint, anint
RUN(NAME intrinsics_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # command_argument_count
RUN(NAME intrinsics_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # hypot
RUN(NAME intrinsics_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dim
RUN(NAME intrinsics_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cshift
RUN(NAME intrinsics_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # iso_fortran_env
RUN(NAME intrinsics_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # ichar & iachar
RUN(NAME intrinsics_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # all
RUN(NAME intrinsics_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # log_gamma
RUN(NAME intrinsics_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cmplx, sin
RUN(NAME intrinsics_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #trig
RUN(NAME intrinsics_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max0, min0
RUN(NAME intrinsics_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # repeat
RUN(NAME intrinsics_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max0
RUN(NAME intrinsics_open_close_read_write LABELS gfortran llvm)
RUN(NAME intrinsics_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) #min
RUN(NAME intrinsics_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # merge
RUN(NAME intrinsics_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # merge
RUN(NAME intrinsics_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN intrinsics_60_data.txt) # iachar for extended ascii
RUN(NAME intrinsics_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # char
RUN(NAME intrinsics_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shape
RUN(NAME intrinsics_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # any
RUN(NAME intrinsics_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # sign
RUN(NAME intrinsics_65 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # matmul
RUN(NAME intrinsics_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dcosh, dsinh, dtanh, dtan
RUN(NAME intrinsics_68 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dsign
RUN(NAME intrinsics_69 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # radix
RUN(NAME intrinsics_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # aint
RUN(NAME intrinsics_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # matmul
RUN(NAME intrinsics_72 LABELS gfortran llvmImplicit) # datan2
RUN(NAME intrinsics_73 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sngl
RUN(NAME intrinsics_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c fortran) # random_number
RUN(NAME intrinsics_75 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # exp
RUN(NAME intrinsics_76 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # exp
RUN(NAME intrinsics_77 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # maxval
RUN(NAME intrinsics_78 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # mod
RUN(NAME intrinsics_79 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # Trailz
RUN(NAME intrinsics_80 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum
RUN(NAME intrinsics_81 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # maxval
RUN(NAME intrinsics_82 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # array support tan, cosh, sinh, tanh
RUN(NAME intrinsics_83 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # kind
RUN(NAME intrinsics_84 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # minexponent
RUN(NAME intrinsics_85 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # maxexponent
RUN(NAME intrinsics_86 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # kind
RUN(NAME intrinsics_87 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # abs
RUN(NAME intrinsics_88 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min for strings
RUN(NAME intrinsics_89 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sin
RUN(NAME intrinsics_90 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min
RUN(NAME intrinsics_91 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # index
RUN(NAME intrinsics_92 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # anint
RUN(NAME intrinsics_93 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # digits
RUN(NAME intrinsics_94 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # hypot
RUN(NAME intrinsics_95 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_96 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # char
RUN(NAME intrinsics_97 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # tiny
RUN(NAME intrinsics_98 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shape
RUN(NAME intrinsics_99 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # size
RUN(NAME intrinsics_100 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # mod
RUN(NAME intrinsics_101 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # repeat
RUN(NAME intrinsics_102 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sin
RUN(NAME intrinsics_103 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # char
RUN(NAME intrinsics_104 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm fortran)
RUN(NAME intrinsics_105 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shape
RUN(NAME intrinsics_106 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # merge
RUN(NAME intrinsics_107 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trailz
RUN(NAME intrinsics_108 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shiftr
RUN(NAME intrinsics_109 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # reshape, matmul
RUN(NAME intrinsics_110 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min0
RUN(NAME intrinsics_111 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min
RUN(NAME intrinsics_112 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max0
RUN(NAME intrinsics_113 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_114 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # aint
RUN(NAME intrinsics_115 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # anint
RUN(NAME intrinsics_116 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # atan2
RUN(NAME intrinsics_117 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # mod
RUN(NAME intrinsics_118 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # hypot
RUN(NAME intrinsics_119 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum
RUN(NAME intrinsics_120 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # product
RUN(NAME intrinsics_121 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # leadz
RUN(NAME intrinsics_122 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # rank
RUN(NAME intrinsics_123 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shiftl
RUN(NAME intrinsics_124 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # lshift
RUN(NAME intrinsics_125 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # random_number
RUN(NAME intrinsics_126 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # random_number
RUN(NAME intrinsics_127 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ifix
RUN(NAME intrinsics_128 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # idint
RUN(NAME intrinsics_129 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # abs
RUN(NAME intrinsics_130 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ishft
RUN(NAME intrinsics_131 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max for strings
RUN(NAME intrinsics_132 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # Floor
RUN(NAME intrinsics_133 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # Ceiling
RUN(NAME intrinsics_134 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # Adjustl
RUN(NAME intrinsics_135 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # nint
RUN(NAME intrinsics_136 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # rshift
RUN(NAME intrinsics_137 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # huge
RUN(NAME intrinsics_138 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # precision
RUN(NAME intrinsics_139 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # modulo
RUN(NAME intrinsics_140 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # selected_int_kind
RUN(NAME intrinsics_141 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # scale
RUN(NAME intrinsics_142 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dot_product
RUN(NAME intrinsics_143 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dot_product
RUN(NAME intrinsics_144 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dot_product
RUN(NAME intrinsics_145 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dot_product
RUN(NAME intrinsics_146 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dprod
RUN(NAME intrinsics_147 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # pack
RUN(NAME intrinsics_148 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH) # pack
RUN(NAME intrinsics_149 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH) # unpack
RUN(NAME unpack_scalar_field_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME unpack_scalar_field_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_150 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maskr
RUN(NAME intrinsics_151 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maskl
RUN(NAME intrinsics_152 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # selected_real_kind
RUN(NAME intrinsics_153 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dim
RUN(NAME intrinsics_154 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # mod
RUN(NAME intrinsics_155 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # bgt
RUN(NAME intrinsics_156 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # blt
RUN(NAME intrinsics_157 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ble
RUN(NAME intrinsics_158 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # bge
RUN(NAME intrinsics_159 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # matmul
RUN(NAME intrinsics_160 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ior
RUN(NAME intrinsics_161 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ieor
RUN(NAME intrinsics_162 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # Not
RUN(NAME intrinsics_163 LABELS gfortran llvm fortran) # ishftc
RUN(NAME intrinsics_164 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # iand
RUN(NAME intrinsics_165 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sum
RUN(NAME intrinsics_166 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ibset
RUN(NAME intrinsics_167 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # btest
RUN(NAME intrinsics_168 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ibclr
RUN(NAME intrinsics_169 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # mod
RUN(NAME intrinsics_170 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # exponent
RUN(NAME intrinsics_171 LABELS llvm llvm_wasm llvm_wasm_emcc) # tolowercase
RUN(NAME intrinsics_172 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # count
RUN(NAME intrinsics_173 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # fraction
RUN(NAME intrinsics_174 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shape
RUN(NAME intrinsics_175 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # pack
RUN(NAME intrinsics_176 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # set_exponent
RUN(NAME intrinsics_177 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # adjustr
RUN(NAME intrinsics_178 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # rrspacing
RUN(NAME intrinsics_179 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH) # sum
RUN(NAME intrinsics_180 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # scan
RUN(NAME intrinsics_181 LABELS gfortran llvm fortran) # repeat
RUN(NAME intrinsics_182 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dshiftl
RUN(NAME intrinsics_183 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ibits
RUN(NAME intrinsics_184 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # selected_char_kind
RUN(NAME intrinsics_185 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # verify
RUN(NAME intrinsics_186 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # verify
RUN(NAME intrinsics_187 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # popcnt
RUN(NAME intrinsics_188 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # lgt, lge, lle, llt
RUN(NAME intrinsics_189 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # scan
RUN(NAME intrinsics_190 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # kind
RUN(NAME intrinsics_191 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # kind
RUN(NAME intrinsics_192 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # bessel_j0
RUN(NAME intrinsics_193 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # poppar
RUN(NAME intrinsics_194 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min
RUN(NAME intrinsics_195 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max
RUN(NAME intrinsics_196 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # bessel_j1
RUN(NAME intrinsics_197 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # bessel_y0
RUN(NAME intrinsics_198 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum
RUN(NAME intrinsics_199 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # count
RUN(NAME intrinsics_200 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran
    EXTRA_ARGS --realloc-lhs-arrays) # pack
RUN(NAME intrinsics_201 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # any
RUN(NAME intrinsics_202 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #parameter
RUN(NAME intrinsics_203 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # asind
RUN(NAME intrinsics_204 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # bessel_y1
RUN(NAME intrinsics_205 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # acosd
RUN(NAME intrinsics_206 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # poppar
RUN(NAME intrinsics_207 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # double precision intrinsics
RUN(NAME intrinsics_208 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # bit_size
RUN(NAME intrinsics_209 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # atand
RUN(NAME intrinsics_210 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES lcompilers_test_module.f90) # bessel_jn
RUN(NAME intrinsics_211 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # bessel_yn
RUN(NAME intrinsics_212 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # specific type intrinsics
RUN(NAME intrinsics_213 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cpu_time
RUN(NAME intrinsics_214 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sind
RUN(NAME intrinsics_215 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cosd
RUN(NAME intrinsics_216 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # tand
RUN(NAME intrinsics_217 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # all
RUN(NAME intrinsics_218 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # new_line
RUN(NAME intrinsics_219 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #parameter, sum
RUN(NAME intrinsics_220 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # merge_bits
RUN(NAME intrinsics_221 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum
RUN(NAME intrinsics_222 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dreal
RUN(NAME intrinsics_223 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # nearest
RUN(NAME intrinsics_224 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spacing
RUN(NAME intrinsics_225 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # iany
RUN(NAME intrinsics_226 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # iall
RUN(NAME iany_01 LABELS gfortran llvm) # iany, iall and iparity with a mask (#12357)
RUN(NAME intrinsics_227 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # norm2
RUN(NAME intrinsics_228 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # derf
RUN(NAME intrinsics_229 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # derfc
RUN(NAME intrinsics_230 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # bessel
RUN(NAME intrinsics_231 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dgamma
RUN(NAME intrinsics_232 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # iparity
RUN(NAME intrinsics_233 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # isnan
RUN(NAME intrinsics_234 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # parity
RUN(NAME intrinsics_235 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # lgamma algama dlgama
RUN(NAME intrinsics_236 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # bit_size, huge
RUN(NAME intrinsics_237 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sngl
RUN(NAME intrinsics_238 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maskl, idl
RUN(NAME intrinsics_239 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # erfc_scaled
RUN(NAME intrinsics_240 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dshiftr
RUN(NAME intrinsics_241 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # logical
RUN(NAME intrinsics_242 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # nint
RUN(NAME intrinsics_243 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sqrt, abs, log (all kind of real)
RUN(NAME intrinsics_244 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cshift
RUN(NAME intrinsics_245 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx
RUN(NAME intrinsics_246 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # adjustl
RUN(NAME intrinsics_247 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # adjustr
RUN(NAME intrinsics_248 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # eoshift
RUN(NAME intrinsics_249 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # nested_sum
RUN(NAME intrinsics_250 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum
RUN(NAME intrinsics_251 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # erf
RUN(NAME intrinsics_252 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # derf
RUN(NAME intrinsics_253 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # erfc
RUN(NAME intrinsics_254 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # derfc
RUN(NAME intrinsics_255 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dbesjn, dbesyn
RUN(NAME intrinsics_256 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # minval
RUN(NAME intrinsics_257 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH) # product
RUN(NAME intrinsics_product_nodes_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # product
RUN(NAME intrinsics_258 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # abs
RUN(NAME intrinsics_259 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # lgt, llt, lge, lle
RUN(NAME intrinsics_260 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH) # sum
RUN(NAME intrinsics_261 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # ceiling
RUN(NAME intrinsics_262 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # floor
RUN(NAME intrinsics_263 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # maxval
RUN(NAME intrinsics_264 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sin
RUN(NAME intrinsics_265 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cos
RUN(NAME intrinsics_266 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # tan
RUN(NAME intrinsics_267 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dsin, dcos, dtan
RUN(NAME intrinsics_268 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # asin
RUN(NAME intrinsics_269 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # acos
RUN(NAME intrinsics_270 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # atan
RUN(NAME intrinsics_271 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # leadz
RUN(NAME intrinsics_272 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trailz
RUN(NAME intrinsics_273 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dprod
RUN(NAME intrinsics_274 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # epsilon refer: #5222
RUN(NAME intrinsics_275 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # and
RUN(NAME intrinsics_276 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # or
RUN(NAME intrinsics_277 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # xor
RUN(NAME intrinsics_278 LABELS gfortran llvm fortran) # tiny
RUN(NAME intrinsics_279 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sinh
RUN(NAME intrinsics_280 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cosh
RUN(NAME intrinsics_281 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # tanh
RUN(NAME intrinsics_282 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # hypot
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
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
RUN(NAME intrinsics_292 LABELS gfortran llvm fortran) # command_argument_count
RUN(NAME intrinsics_293 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dgamma
RUN(NAME intrinsics_294 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # log_gamma
RUN(NAME intrinsics_295 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # exp
RUN(NAME intrinsics_296 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # storage_size
RUN(NAME intrinsics_297 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # poppar
RUN(NAME intrinsics_298 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dot_product
RUN(NAME intrinsics_299 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # command_argument_count
RUN(NAME intrinsics_300 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # kind
RUN(NAME intrinsics_301 LABELS llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_302 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # is_contiguous
RUN(NAME intrinsics_303 LABELS gfortran llvm) # random_seed
RUN(NAME intrinsics_304 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sign
RUN(NAME intrinsics_305 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # realpart
RUN(NAME intrinsics_306 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # imagpart
RUN(NAME intrinsics_307 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # imag
RUN(NAME intrinsics_308 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dgamma
RUN(NAME intrinsics_309 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # pack
RUN(NAME intrinsics_310 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # digits
RUN(NAME intrinsics_311 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays) # minloc
RUN(NAME intrinsics_312 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # minloc
RUN(NAME intrinsics_313 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # maxloc
RUN(NAME intrinsics_314 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # dshift
RUN(NAME intrinsics_315 LABELS llvm llvm_wasm llvm_wasm_emcc) # out_of_range
RUN(NAME intrinsics_316 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max, min
RUN(NAME intrinsics_317 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # get_command_argument
RUN(NAME intrinsics_318 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # cpu_time
RUN(NAME intrinsics_319 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # system_clock
RUN(NAME intrinsics_320 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # len_trim
RUN(NAME intrinsics_321 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trim
RUN(NAME intrinsics_322 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # index
RUN(NAME intrinsics_323 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH) # dot_product
RUN(NAME intrinsics_324 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # max
RUN(NAME intrinsics_325 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spread
RUN(NAME intrinsics_326 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minloc
RUN(NAME intrinsics_327 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # transpose
RUN(NAME intrinsics_328 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_329 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # idnint
RUN(NAME intrinsics_330 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #amax0, max1
RUN(NAME intrinsics_331 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cshift
RUN(NAME intrinsics_332 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_333 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_334 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # move_alloc
RUN(NAME move_alloc_pointer_alias LABELS gfortran llvm)
RUN(NAME intrinsics_335 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #kind, real
RUN(NAME intrinsics_336 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #any
RUN(NAME intrinsics_337 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dble, dfloat, float, shifta
RUN(NAME intrinsics_338 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # compiler_options
RUN(NAME intrinsics_339 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minloc
RUN(NAME intrinsics_340 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # leadz
RUN(NAME intrinsics_341 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # trailz
RUN(NAME intrinsics_342 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spread
RUN(NAME intrinsics_343 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cshift
RUN(NAME intrinsics_344 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maskl
RUN(NAME intrinsics_345 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_346 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # iachar
RUN(NAME intrinsics_347 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # reshape
RUN(NAME intrinsics_348 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # reshape
RUN(NAME intrinsics_349 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # pack
RUN(NAME intrinsics_350 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spread
RUN(NAME intrinsics_351 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST_MATH) # spread
RUN(NAME intrinsics_352 LABELS gfortran llvm) # random_seed
RUN(NAME intrinsics_353 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # random_number
RUN(NAME intrinsics_354 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # minval
RUN(NAME intrinsics_355 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # system_clock
RUN(NAME intrinsics_356 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_357 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_358 LABELS gfortran llvm) # getseed
RUN(NAME intrinsics_359 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # pack
RUN(NAME intrinsics_360 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_361 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME intrinsics_362 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # is_contiguous
RUN(NAME intrinsics_363 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cshift
RUN(NAME intrinsics_364 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sum/reshape
RUN(NAME intrinsics_365 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # is_contiguous
RUN(NAME intrinsics_366 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # shiftl, shiftr, trailz, btest, ibclr
RUN(NAME intrinsics_367 LABELS gfortran llvm) # get_environment_variable
RUN(NAME intrinsics_368 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # kind
RUN(NAME intrinsics_369 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_370 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_371 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_372 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx
RUN(NAME intrinsics_373 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_374 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_375 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # move_alloc for string
RUN(NAME intrinsics_376 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # present
RUN(NAME intrinsics_377 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minval, maxval
RUN(NAME intrinsics_378 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # move_alloc
RUN(NAME intrinsics_379 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # get_command_argument
RUN(NAME intrinsics_380 LABELS gfortran llvm) # get_environment_variable
RUN(NAME intrinsics_381 LABELS gfortran llvm) # get_environment_variable
RUN(NAME intrinsics_382 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # pack
RUN(NAME intrinsics_383 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # pack
RUN(NAME intrinsics_384 LABELS gfortran llvm fortran) # eoshift
RUN(NAME intrinsics_385 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # nearest
RUN(NAME intrinsics_386 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # product
RUN(NAME intrinsics_387 LABELS gfortran llvm) # execute_command_line
RUN(NAME intrinsics_388 LABELS gfortran llvm) # execute_command_line
RUN(NAME intrinsics_389 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # loc
RUN(NAME intrinsics_390 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # c_f_ptr
RUN(NAME intrinsics_391 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sum, selected_real_kind, minloc, merge
RUN(NAME intrinsics_392 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # present
RUN(NAME intrinsics_393 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx
RUN(NAME intrinsics_394 LABELS gfortran llvm) # execute_command_line
RUN(NAME intrinsics_395 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx kind cast regression
RUN(NAME intrinsics_396 LABELS gfortran llvm)
RUN(NAME intrinsics_397 LABELS llvm llvm_wasm llvm_wasm_emcc) # selected_logical_kind
RUN(NAME intrinsics_398 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # findloc
RUN(NAME intrinsics_399 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # intrinsic impure subroutine
RUN(NAME intrinsics_400 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # compiler_options
RUN(NAME intrinsics_401 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minloc
RUN(NAME intrinsics_402 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # intrinsic statement with procedure argument
RUN(NAME intrinsics_403 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # min1, max1
RUN(NAME intrinsics_404 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_405 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_406 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # iachar with array arguments
RUN(NAME intrinsics_407 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # complex abs() overflow
RUN(NAME intrinsics_408 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # complex abs() underflow
RUN(NAME intrinsics_409 LABELS gfortran llvm) # execute_command_line with file flush
RUN(NAME intrinsics_410 LABELS gfortran llvm
    EXTRA_ARGS -fdefault-integer-8
    GFORTRAN_ARGS -fdefault-integer-8) # maxloc/minloc/shape with -fdefault-integer-8
RUN(NAME intrinsics_411 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # iachar with transfer of assumed-length strings
RUN(NAME intrinsics_412 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_413 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # iachar(char(0))
RUN(NAME intrinsics_414 LABELS gfortran llvm) # system
RUN(NAME intrinsics_415 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sum/product with scalar mask = .true.
RUN(NAME intrinsics_416 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays) # string concat
RUN(NAME intrinsics_417 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # sleep
RUN(NAME intrinsics_418 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME intrinsics_419 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maxval/minval with dim on pointer arrays
RUN(NAME intrinsics_420 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # dble/float with array constructor
RUN(NAME intrinsics_421 LABELS gfortran llvm) # execute_command_line cmdstat/cmdmsg
RUN(NAME intrinsics_422 LABELS llvm llvm_wasm llvm_wasm_emcc) # this_image
RUN(NAME intrinsics_423 LABELS llvm llvm_wasm llvm_wasm_emcc) # num_images
RUN(NAME intrinsics_424 LABELS llvm llvm_wasm llvm_wasm_emcc) # co_sum
RUN(NAME intrinsics_425 LABELS llvm llvm_wasm llvm_wasm_emcc) # co_sum with optional args
RUN(NAME intrinsics_426 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # count(mask, dim) with variable dim
RUN(NAME intrinsics_427 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # maxval with derived-type component in declaration
RUN(NAME intrinsics_428 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays) # merge array mask in loop
RUN(NAME intrinsics_429 LABELS gfortran llvm) # random_seed put resets RNG
RUN(NAME intrinsics_430 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # is_contiguous with struct component sections
RUN(NAME intrinsics_431 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) #char
RUN(NAME intrinsics_432 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # nested bitwise intrinsics with value args
RUN(NAME intrinsics_433 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_434 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # selected_int_kind
RUN(NAME intrinsics_435 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minloc/maxloc with dim and array mask
RUN(NAME intrinsics_436 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # rand
RUN(NAME intrinsics_437 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # norm2 with dim argument
RUN(NAME intrinsics_438 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # norm2 with variable dim argument
RUN(NAME intrinsics_439 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # minval/maxval for strings
RUN(NAME intrinsics_440 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # atan2d
RUN(NAME intrinsics_441 LABELS llvm llvm_wasm llvm_wasm_emcc) # sinpi/cospi/tanpi/asinpi/acospi/atanpi/atan2pi  <--- GFortran does not have support for these intrinsics
RUN(NAME intrinsics_442 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # ascii kind string literal (ascii_"...")
RUN(NAME intrinsics_443 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # char with kind
RUN(NAME intrinsics_444 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # anint parameter array
RUN(NAME intrinsics_445 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # log_gamma
RUN(NAME intrinsics_446 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # spread
RUN(NAME intrinsics_447 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # sngl
RUN(NAME intrinsics_448 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # achar
RUN(NAME intrinsics_449 LABELS gfortran llvm) # storage_size with c_ptr
RUN(NAME intrinsics_450 LABELS llvm) # storage_size struct alignment
RUN(NAME intrinsics_451 LABELS gfortran llvm) # findloc with character ExpressionLength
RUN(NAME intrinsics_452 LABELS gfortran llvm) # findloc with Pointer-wrapped ExpressionLength
RUN(NAME intrinsics_453 LABELS gfortran llvm) # Lgt intrinsic as while loop condition
RUN(NAME intrinsics_454 LABELS gfortran llvm) # all/any with array section and whole array
RUN(NAME intrinsics_455 LABELS gfortran llvm) # intrinsic declaration scope isolation
RUN(NAME intrinsics_456 LABELS gfortran llvm) # move_alloc preserves lower bounds
RUN(NAME intrinsics_457 LABELS gfortran llvm) # eoshift on 2D array with dim
RUN(NAME intrinsics_458 LABELS gfortran llvm) # sign with common block variables
RUN(NAME intrinsics_459 LABELS gfortran llvm) # minval over array with runtime bounds (--fast regression)
RUN(NAME intrinsics_460 LABELS gfortran llvm) # random_seed put/get round-trip
RUN(NAME intrinsics_461 LABELS gfortran llvm) # MVbits with array (treated as elemental function)
RUN(NAME intrinsics_462 LABELS gfortran llvm) # nested spread over array section preserves result shape
RUN(NAME intrinsics_463 LABELS llvm) # get_command (optional keyword arguments) -- gfortran on CI fails, other gfortran versions pass
RUN(NAME intrinsics_464 LABELS gfortran llvm) # cshift with array shift
RUN(NAME intrinsics_465 LABELS gfortran llvm) # index() must not read past declared length of deferred-length string
RUN(NAME intrinsics_466 LABELS gfortran llvm) # eoshift with array-valued shift
RUN(NAME intrinsics_467 LABELS gfortran llvm) # elemental intrinsics over allocatable arrays in array constructors
RUN(NAME intrinsics_468 LABELS gfortran llvm) # product with dim in array expression
RUN(NAME intrinsics_469 LABELS gfortran llvm) # dot product with empty/zero-length arrays
RUN(NAME intrinsics_470 LABELS gfortran llvm) # index with character(kind=4) arguments
RUN(NAME intrinsics_471 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc GFORTRAN_ARGS -fcoarray=single) # co_max
RUN(NAME intrinsics_472 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc GFORTRAN_ARGS -fcoarray=single) # co_min
RUN(NAME intrinsics_473 LABELS gfortran llvm) # maxloc/minloc with compile-time mask evaluation on 2D arrays
RUN(NAME intrinsics_474 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc GFORTRAN_ARGS -fcoarray=single) # co_broadcast
RUN(NAME intrinsics_475 LABELS gfortran llvm) # ishftc with SIZE keeps high bits of I
RUN(NAME intrinsics_476 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # scale with a negative exponent
RUN(NAME intrinsics_477 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # right-padding of character args for LGT/LLT/LGE/LLE
RUN(NAME intrinsics_478 LABELS gfortran llvm) # blank padding of character operands in LGE/LGT/LLE/LLT at run time
RUN(NAME intrinsics_479 LABELS gfortran llvm) # date_and_time: VALUES(4) agrees with ZONE
RUN(NAME intrinsics_480 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cshift on deferred-length character dummy array (#12392)
RUN(NAME intrinsics_481 LABELS gfortran llvm c) # sign on real(4)/real(8) with negative zero, C backend RealCopySign (#13918)
RUN(NAME intrinsics_482 LABELS gfortran llvm) # dot_product on a derived-type component section (#14036)
RUN(NAME intrinsics_483 LABELS gfortran llvm EXTRAFILES intrinsics_483b.f90) # sum/sin/string-concatenation helpers in two object files link (#14496, #14179)
RUN(NAME intrinsics_484 LABELS gfortran llvm EXTRAFILES intrinsics_484b.f90) # cpu_time/random_number/system_clock helpers in two object files link (#14496)
RUN(NAME intrinsics_485 LABELS gfortran llvm) # array intrinsics on allocatable/pointer arrays with lower bound not 1 (#14369)
RUN(NAME intrinsics_486 LABELS gfortran llvm) # array intrinsic results are 1-based for explicit-shape arguments with lower bound not 1 (#14369)
RUN(NAME intrinsics_487 LABELS gfortran llvm) # cshift with an array shift whose lower bounds are named constants or not 1 (#13720)
RUN(NAME intrinsics_488 LABELS gfortran llvm) # dot_product of descriptor integer arrays and mixed real kinds (#13489)
RUN(NAME intrinsics_489 LABELS gfortran llvm) 
RUN(NAME intrinsics_490 LABELS gfortran llvm) # get_command status is 0 on success, -1 on truncation (#690)
RUN(NAME intrinsics_491 LABELS llvm EXTRAFILES intrinsics_491c.c) # get_command status is positive when called from a C main (#690); GFortran gives 0
RUN(NAME intrinsics_492 LABELS gfortran llvm fortran) # spread of a constant rank>1 array is not rejected as an invalid dim
RUN(NAME intrinsics_493 LABELS gfortran llvm) # dot_product/pack/unpack of kind=1/2 constant arrays are not rejected
RUN(NAME intrinsics_494 LABELS gfortran llvm NO_FAST_MATH) # aint/anint of values beyond integer(8) range and of infinity (#15040)
RUN(NAME intrinsics_495 LABELS gfortran llvm) # cshift/eoshift of deferred-length character arrays (#14451)
RUN(NAME intrinsics_496 LABELS gfortran llvm) # transpose/spread of deferred-length character arrays (#14775)
RUN(NAME intrinsics_497 LABELS gfortran llvm) # spread with ncopies from size() of a parameter array (#15327)
RUN(NAME intrinsics_498 LABELS gfortran llvm) # compile-time dot_product/merge_bits/max/min/ibset/btest of integer(8)
RUN(NAME intrinsics_499 LABELS gfortran llvm fortran) # spread of a scalar source, printed by the Fortran backend
RUN(NAME intrinsics_502 LABELS gfortran llvm) # pack/count with a negated complex comparison of array sections (#15926)
RUN(NAME intrinsics_503 LABELS gfortran llvm) # ibset constant folding at signed-kind boundaries
RUN(NAME intrinsics_504 LABELS gfortran llvm) # ishft/shiftl/shiftr/shifta with |shift| == bit_size (#16451)
RUN(NAME intrinsics_505 LABELS gfortran llvm EXTRA_ARGS --descriptor-index-64) # array reductions with a default integer DIM (#16722)
RUN(NAME intrinsics_506 LABELS gfortran llvm) # array reductions with a DIM of kind 8, 2 or 1 (#16722)
RUN(NAME intrinsics_507 LABELS llvm NO_STD_F23) # expm1 with a real(8) argument; expm1 is an LFortran extension (#16904)
RUN(NAME intrinsics_508 LABELS gfortran llvm) # cshift/eoshift of an allocatable array into an allocated array with lower bound 0 (#16912)
RUN(NAME intrinsics_509 LABELS gfortran llvm) # selected_real_kind returns kind 16 for precision above kind 8 (#13537)
RUN(NAME intrinsics_510 LABELS gfortran llvm) # kind and len of array arguments are scalars (#3688)
RUN(NAME intrinsics_511 LABELS gfortran llvm) # any(isnan()) of a component of a rank-2 array of derived types (#11640)
RUN(NAME intrinsics_512 LABELS gfortran llvm) # maxloc with mask of a component of an array of derived types (#11639)
RUN(NAME intrinsics_len_trim_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intrinsics_len_01 LABELS gfortran llvm)
RUN(NAME intrinsics_len_02 LABELS gfortran llvm)
RUN(NAME storage_size_01 LABELS gfortran llvm) # storage_size of allocatable character
RUN(NAME storage_size_02 LABELS gfortran llvm) # storage_size of run-time length characters
RUN(NAME storage_size_03 LABELS gfortran llvm) # storage_size of real(10) (#17030)

RUN(NAME extends_type_of_01 LABELS gfortran llvm)
RUN(NAME extends_type_of_02 LABELS gfortran llvm) # polymorphic array arguments
RUN(NAME same_type_as_01 LABELS gfortran llvm) # polymorphic array arguments
RUN(NAME same_type_as_02 LABELS gfortran llvm) # assumed-rank polymorphic arguments

RUN(NAME la_constants LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # LAPACK constants

RUN(NAME integer_boz_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME integer_star_01 LABELS gfortran llvm)
RUN(NAME real_star_01 LABELS gfortran llvm)
RUN(NAME logical_star_01 LABELS gfortran llvm)

RUN(NAME test_dshiftr LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME passing_array_01 LABELS gfortran fortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME passing_array_02 LABELS gfortran fortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME passing_array_03 LABELS gfortran fortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME passing_array_04 LABELS gfortran fortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME passing_array_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME parameter_01 LABELS gfortran llvm)
RUN(NAME parameter_02 LABELS gfortran llvm)
RUN(NAME parameter_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) #kind
RUN(NAME parameter_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # selected_real,int_kind symboltable
RUN(NAME parameter_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran) # Implicit IntegerToReal
RUN(NAME parameter_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx
RUN(NAME parameter_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME parameter_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME parameter_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME parameter_10 LABELS gfortran llvm fortran) # sin
RUN(NAME parameter_11 LABELS gfortran llvm fortran) # merge
RUN(NAME parameter_12 LABELS gfortran llvm fortran) # implied do loops
RUN(NAME parameter_13 LABELS gfortran llvm) # compile time example
RUN(NAME parameter_14 LABELS gfortran llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME parameter_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME parameter_16 LABELS gfortran llvm)
RUN(NAME parameter_17 LABELS gfortran llvm)
RUN(NAME parameter_18 LABELS gfortran llvm)
RUN(NAME parameter_19 LABELS gfortran llvm)
RUN(NAME parameter_20 LABELS gfortran llvm)
RUN(NAME parameter_21 LABELS gfortran llvm)
RUN(NAME parameter_22 LABELS gfortran llvm)
RUN(NAME parameter_23 LABELS gfortran llvm c)
RUN(NAME parameter_24 LABELS gfortran llvm)
RUN(NAME parameter_25 LABELS gfortran llvm)
RUN(NAME parameter_26 LABELS gfortran llvm)
RUN(NAME parameter_27 LABELS gfortran llvm)
# Sequence association of an element of a named constant array with an array
# dummy of a separately compiled external procedure: an array element
# designator actual argument represents the element sequence that starts at
# that element (F2018 15.5.2.11 p2). Not gfortran: it passes the element in a
# one-element temporary, so the callee reads past it (a gfortran bug).
RUN(NAME parameter_28 LABELS llvm EXTRAFILES parameter_28_ext.f90 EXTRA_ARGS --implicit-interface)
# The same for an explicit-shape array dummy of a type-bound procedure after
# the passed object. Not gfortran: it treats the element of the named constant
# as a scalar constant and rejects the call (rank mismatch).
RUN(NAME parameter_29 LABELS llvm)
RUN(NAME parameter_30 LABELS gfortran llvm c cpp)
RUN(NAME parameter_31 LABELS gfortran llvm)
RUN(NAME parameter_32 LABELS gfortran llvm)

RUN(NAME fortuno_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME modules_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran mlir)
RUN(NAME modules_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME modules_03 LABELS gfortran llvm)
RUN(NAME modules_04 LABELS gfortran llvm)
RUN(NAME modules_05 LABELS gfortran llvm)
RUN(NAME modules_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME modules_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_07_module.f90)
RUN(NAME modules_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_22_module.f90)
RUN(NAME modules_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_23_module.f90)
RUN(NAME modules_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
        modules_08_a.f90 modules_08_b.f90)
RUN(NAME modules_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
    modules_09_b.f90 modules_09_a.f90)
RUN(NAME modules_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME modules_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_12 LABELS gfortran llvm)
RUN(NAME modules_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME modules_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_14_a.f90)
RUN(NAME modules_15 LABELS gfortran llvm EXTRAFILES
        modules_15b.f90 modules_15c.c)
RUN(NAME modules_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_16b.f90)
RUN(NAME modules_18 LABELS gfortran llvm EXTRAFILES
        modules_18b.f90 modules_18c.c)
RUN(NAME modules_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
        modules_19b.f90)
RUN(NAME modules_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
        modules_20b.f90)
RUN(NAME modules_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
        modules_21b.f90)
RUN(NAME modules_24 LABELS gfortran llvm)
RUN(NAME modules_25 LABELS gfortran EXTRAFILES
        modules_25_module.f90 modules_25_module1.f90)
RUN(NAME modules_27 LABELS gfortran EXTRAFILES
        modules_27_module1.f90 modules_27_module2.f90)
RUN(NAME modules_28 LABELS gfortran EXTRAFILES
        modules_28_module1.f90 modules_28_module2.f90)
RUN(NAME modules_29 LABELS gfortran EXTRAFILES
        modules_29_module1.f90 modules_29_module2.f90 modules_29_module3.f90)
RUN(NAME modules_30 LABELS gfortran EXTRAFILES
        modules_30_module1.f90 modules_30_module2.f90
        modules_30_module3.f90 modules_30_module4.f90)
RUN(NAME modules_31 LABELS gfortran EXTRAFILES
        modules_31_module1.f90 modules_31_module2.f90)
RUN(NAME modules_32 LABELS gfortran llvm)
RUN(NAME modules_33 LABELS gfortran EXTRAFILES
        modules_33_module1.f90 modules_33_module2.f90
        modules_33_module3.f90)
RUN(NAME modules_34 LABELS gfortran EXTRAFILES
        modules_34_module1a.f90 modules_34_module1.f90
        modules_34_module2.f90 modules_34_module3.f90)
RUN(NAME modules_35 LABELS gfortran)
RUN(NAME modules_36 LABELS gfortran)
RUN(NAME modules_37 LABELS gfortran llvm)
RUN(NAME modules_38 LABELS gfortran llvm)
RUN(NAME modules_39 LABELS gfortran EXTRAFILES
        modules_39_module.f90)
RUN(NAME modules_44 LABELS gfortran EXTRAFILES
        modules_44_module.f90)
RUN(NAME modules_40 LABELS gfortran llvm)
RUN(NAME modules_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_43 LABELS gfortran)
RUN(NAME modules_45 LABELS gfortran)
RUN(NAME modules_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_STD_F23)
RUN(NAME modules_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_50 LABELS gfortran llvm)
RUN(NAME modules_51 LABELS gfortran llvmImplicit)
RUN(NAME modules_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES modules_58_module.f90)
RUN(NAME modules_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
        EXTRAFILES modules_62_terminal.f90 modules_62_parser.f90)
RUN(NAME modules_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
        EXTRAFILES modules_63_module.f90)
RUN(NAME modules_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_65 LABELS gfortran llvm
        EXTRAFILES modules_65_base.f90 modules_65_child.f90 modules_65_worker.f90)
RUN(NAME modules_66 LABELS gfortran llvm
        EXTRAFILES modules_66_base.f90 modules_66_worker.f90)
RUN(NAME modules_67 LABELS gfortran llvm
        EXTRAFILES modules_67_origin.f90 modules_67_reexport.f90 modules_67_consumer.f90)
RUN(NAME modules_68 LABELS gfortran llvm)
RUN(NAME modules_69 LABELS gfortran llvm)
RUN(NAME modules_70 LABELS gfortran llvm)
RUN(NAME modules_71 LABELS gfortran llvm)
RUN(NAME modules_72 LABELS gfortran llvm
        EXTRAFILES modules_72_stypemod.f90 modules_72_otypemod.f90)
RUN(NAME modules_73 LABELS gfortran llvm EXTRAFILES modules_73_mod.f90)
RUN(NAME module_func_generic_submodule LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME modules_74 LABELS gfortran llvm)
RUN(NAME modules_75 LABELS gfortran llvm fortran)
RUN(NAME modules_76 LABELS gfortran llvm)
RUN(NAME modules_77 LABELS gfortran llvm)
RUN(NAME modules_79 LABELS gfortran llvm EXTRAFILES modules_79_mod.f90)
RUN(NAME modules_80 LABELS gfortran llvm)
RUN(NAME modules_81 LABELS gfortran llvm)
RUN(NAME modules_82 LABELS gfortran llvm)
RUN(NAME modules_83 LABELS gfortran llvm)
RUN(NAME modules_84 LABELS gfortran llvm)
RUN(NAME modules_85 LABELS gfortran llvm)
RUN(NAME modules_86 LABELS gfortran llvm)
RUN(NAME modules_87 LABELS gfortran llvm fortran)
RUN(NAME modules_88 LABELS gfortran llvm)
RUN(NAME modules_89 LABELS gfortran llvm EXTRAFILES modules_89_mod.f90)
RUN(NAME modules_90 LABELS gfortran llvm)
RUN(NAME modules_91 LABELS gfortran llvm)
RUN(NAME modules_92 LABELS gfortran llvm EXTRAFILES modules_92_mod.f90) # derived-type bounds of external procedure interfaces in .mod (#17148)
RUN(NAME modules_93 LABELS gfortran llvm)
RUN(NAME associate_06 LABELS gfortran EXTRAFILES
        associate_06_module.f90)

RUN(NAME lfortran_intrinsic_sin LABELS gfortran llvm EXTRAFILES lfortran_intrinsic_sin_c.c)

RUN(NAME bindc1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bindc2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bindc3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bindc4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bindc5 LABELS gfortran llvm fortran)
RUN(NAME bindc6 LABELS gfortran llvm EXTRAFILES bindc6_sum.c)
RUN(NAME bindc_01 LABELS gfortran llvm EXTRAFILES bindc_01b.f90 bindc_01c.c)
RUN(NAME test_c_long_double LABELS gfortran llvm EXTRAFILES test_c_long_double_c.c)
RUN(NAME test_c_long_double_01 LABELS gfortran llvm)
RUN(NAME test_c_long_double_02 LABELS gfortran llvm EXTRAFILES test_c_long_double_02b.f90 test_c_long_double_02c.c)
RUN(NAME bindc_02 LABELS gfortran llvm EXTRAFILES bindc_02b.f90 bindc_02c.c)
RUN(NAME bindc_03 LABELS gfortran llvm EXTRAFILES bindc_03c.c)
RUN(NAME bindc_04 LABELS gfortran llvm EXTRAFILES bindc_04c.c)
RUN(NAME bindc_05 LABELS gfortran llvm EXTRAFILES bindc_05c.c)
RUN(NAME bindc_06 LABELS gfortran llvm EXTRAFILES bindc_06b.c)
RUN(NAME bindc_07 LABELS gfortran llvm EXTRAFILES bindc_07.c)
RUN(NAME bindc_08 LABELS gfortran llvm EXTRAFILES bindc_08.c EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME bindc_57 LABELS gfortran llvm EXTRAFILES bindc_57.c)
RUN(NAME bindc_58 LABELS gfortran llvm EXTRAFILES bindc_58_module.f90)
RUN(NAME bindc_60 LABELS gfortran llvm EXTRAFILES bindc_60.c)
RUN(NAME bindc_61 LABELS gfortran llvm EXTRAFILES bindc_61.c)
RUN(NAME bindc_62 LABELS gfortran llvm EXTRAFILES bindc_62.c)
RUN(NAME bindc_63 LABELS gfortran llvm fortran)
RUN(NAME bindc_64 LABELS gfortran llvm)
RUN(NAME bindc_65 LABELS gfortran llvm EXTRAFILES bindc_65.c)
RUN(NAME bindc_66 LABELS gfortran llvm)
RUN(NAME bindc_67 LABELS gfortran llvm EXTRAFILES bindc_67.c)
RUN(NAME bindc_68 LABELS gfortran llvm EXTRAFILES bindc_68c.c)
RUN(NAME bindc_69 LABELS gfortran llvm EXTRAFILES bindc_69c.c)
RUN(NAME bindc_70 LABELS gfortran llvm EXTRAFILES bindc_70c.c)
RUN(NAME bindc_71 LABELS gfortran llvm EXTRAFILES bindc_71.c)
RUN(NAME bindc_72 LABELS gfortran llvm)
RUN(NAME bindc_73 LABELS gfortran llvm)
RUN(NAME bindc_74 LABELS gfortran llvm)
RUN(NAME bindc_75 LABELS gfortran llvm EXTRAFILES bindc_75.c)
RUN(NAME bindc_76 LABELS gfortran llvm EXTRAFILES bindc_76.c)
RUN(NAME bindc_77 LABELS gfortran llvm EXTRAFILES bindc_77.c)
RUN(NAME bindc_09 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME bindc_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bindc_11 LABELS gfortran llvm fortran)
RUN(NAME bindc_12 LABELS gfortran llvm)
RUN(NAME bindc_13 LABELS gfortran llvm)
RUN(NAME bindc_14 LABELS gfortran llvm)
RUN(NAME bindc_15 LABELS llvm)
RUN(NAME bindc_16 LABELS gfortran llvm)
RUN(NAME bindc_17 LABELS gfortran llvm EXTRAFILES bindc_17.c)
RUN(NAME bindc_18 LABELS gfortran llvm)
RUN(NAME bindc_19 LABELS gfortran llvm)
RUN(NAME bindc_35 LABELS gfortran flang EXTRAFILES bindc_35c.c)
RUN(NAME bindc_38 LABELS gfortran flang EXTRAFILES bindc_38c.c)
RUN(NAME bindc_39 LABELS gfortran flang EXTRAFILES bindc_39c.c)
RUN(NAME bindc_43 LABELS gfortran flang EXTRAFILES bindc_43c.c)
RUN(NAME bindc_45 LABELS gfortran flang EXTRAFILES bindc_45c.c)
RUN(NAME bindc_46 LABELS gfortran llvm)
RUN(NAME bindc_47 LABELS gfortran llvm EXTRAFILES bindc_47c.c)
RUN(NAME bindc_48 LABELS gfortran llvm EXTRAFILES bindc_48_mod.f90)
RUN(NAME bindc_49 LABELS gfortran llvm)
RUN(NAME bindc_50 LABELS gfortran llvm)
RUN(NAME bindc_51 LABELS gfortran llvm)
RUN(NAME bindc_52 LABELS gfortran llvm)
# Extension: BIND(C) character(len>1); GFortran rejects, so llvm only
RUN(NAME bindc_53 LABELS llvm)
RUN(NAME bindc_54 LABELS gfortran llvm)
RUN(NAME bindc_55 LABELS gfortran llvm)
RUN(NAME bindc_56 LABELS gfortran llvm)
RUN(NAME bindc_iso_fb_01 LABELS gfortran llvm flang EXTRAFILES bindc_iso_fb_01c.c)
RUN(NAME bindc_iso_fb_02 LABELS gfortran llvm flang EXTRAFILES bindc_iso_fb_02c.c)
RUN(NAME bindc_iso_fb_03 LABELS gfortran llvm flang EXTRAFILES bindc_iso_fb_03c.c)
RUN(NAME bindc_iso_fb_04 LABELS flang llvm EXTRAFILES bindc_iso_fb_04c.c)
RUN(NAME bindc_iso_fb_05 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_05c.c)
RUN(NAME bindc_iso_fb_06 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_06c.c)
RUN(NAME bindc_iso_fb_07 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_07c.c)
RUN(NAME bindc_iso_fb_08 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_08c.c)
RUN(NAME bindc_iso_fb_09 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_09c.c)
RUN(NAME bindc_iso_fb_10 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_10c.c)
RUN(NAME bindc_iso_fb_11 LABELS gfortran llvm EXTRAFILES bindc_iso_fb_11c.c)
RUN(NAME bindc_cfi_alloc_copyback_03 LABELS llvm EXTRAFILES bindc_cfi_alloc_copyback_03c.c)
RUN(NAME bindc_cfi_alloc_copyback_04 LABELS gfortran llvm EXTRAFILES bindc_cfi_alloc_copyback_04c.c)
RUN(NAME bindc_cfi_alloc_copyback_05 LABELS gfortran llvm EXTRAFILES bindc_cfi_alloc_copyback_05c.c)
RUN(NAME bindc_cfi_alloc_copyback_06 LABELS gfortran llvm)
RUN(NAME case_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp)
RUN(NAME case_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME case_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp)
RUN(NAME case_04 LABELS gfortran)
RUN(NAME case_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp)
RUN(NAME case_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp)
RUN(NAME case_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME case_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME case_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME case_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME case_11 LABELS gfortran llvm) # more than one range in a case selector (#5895)

RUN(NAME select_type_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_04 LABELS gfortran
        EXTRAFILES select_type_03_module.f90 select_type_03.f90)
RUN(NAME select_type_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_STD_F23)
RUN(NAME select_type_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME select_type_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME select_type_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME select_type_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME select_type_38 LABELS gfortran llvm)
RUN(NAME select_type_39 LABELS gfortran llvm)
RUN(NAME select_type_40 LABELS gfortran llvm)
RUN(NAME select_type_41 LABELS gfortran llvm)

RUN(NAME select_type_42 LABELS gfortran llvm)
RUN(NAME select_type_43 LABELS gfortran llvm)
RUN(NAME select_type_44 LABELS gfortran llvm)
RUN(NAME select_type_45 LABELS gfortran llvm)
RUN(NAME select_type_46 LABELS gfortran llvm)
RUN(NAME select_type_47 LABELS gfortran llvm)
RUN(NAME select_type_48 LABELS gfortran llvm)
RUN(NAME select_type_49 LABELS gfortran llvm)
RUN(NAME select_type_50 LABELS gfortran llvm)
RUN(NAME select_type_51 LABELS gfortran llvm)
RUN(NAME select_type_52 LABELS gfortran llvm)
RUN(NAME select_type_53 LABELS llvm)
RUN(NAME select_type_54 LABELS gfortran llvm)
RUN(NAME select_type_55 LABELS gfortran llvm)
RUN(NAME select_type_56 LABELS gfortran llvm)
RUN(NAME select_type_57 LABELS gfortran llvm)
RUN(NAME select_type_58 LABELS gfortran llvm)
RUN(NAME select_type_59 LABELS gfortran llvm)
RUN(NAME select_type_60 LABELS gfortran llvm)
RUN(NAME select_type_61 LABELS gfortran llvm)
RUN(NAME select_type_62 LABELS gfortran llvm)
RUN(NAME select_type_63 LABELS llvm)
RUN(NAME select_type_64 LABELS gfortran llvm)
RUN(NAME select_type_65 LABELS gfortran llvm)
RUN(NAME select_type_66 LABELS gfortran llvm)
RUN(NAME select_type_67 LABELS llvm)


RUN(NAME where_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME where_04 LABELS gfortran) # TODO: Fix this test #1631
RUN(NAME where_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME where_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME where_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME where_17 LABELS gfortran llvm)
RUN(NAME where_18 LABELS gfortran llvm)
RUN(NAME where_19 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME where_20 LABELS gfortran llvm)

RUN(NAME forallloop_01 LABELS gfortran)
RUN(NAME forall_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME forall_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-typing)
RUN(NAME forall_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME forall_04 LABELS gfortran llvm)
RUN(NAME forall_05 LABELS gfortran llvm)
RUN(NAME forall_06 LABELS gfortran llvm)
RUN(NAME forall_07 LABELS gfortran llvm)
RUN(NAME forall_08 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME forall_09 LABELS llvm EXTRA_ARGS --realloc-lhs-arrays) # GFortran assigns these FORALLs one index at a time
RUN(NAME forall_10 LABELS llvm) # GFortran evaluates these vector subscripts one index at a time
RUN(NAME forall_11 LABELS gfortran llvm)
RUN(NAME forall_12 LABELS llvm EXTRA_ARGS --realloc-lhs-arrays) # GFortran does not reallocate these components in a FORALL
RUN(NAME forall_14 LABELS gfortran llvm)

RUN(NAME parsing_01 LABELS gfortran)
RUN(NAME parsing_02 LABELS gfortran llvm)
RUN(NAME parsing_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)

RUN(NAME interface_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_03 LABELS gfortran llvm)
RUN(NAME interface_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_06 LABELS gfortran llvm)
RUN(NAME interface_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_09 LABELS gfortran)
RUN(NAME interface_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_12a LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES interface_12b.f90)
RUN(NAME interface_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME interface_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME interface_31 LABELS gfortran llvm)
RUN(NAME interface_32 LABELS gfortran llvm EXTRAFILES interface_32_module.f90 EXTRA_ARGS --implicit-interface)
RUN(NAME interface_33 LABELS gfortran llvm EXTRAFILES interface_33_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME interface_34 LABELS gfortran llvm)

RUN(NAME implicit_interface_01 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_02 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_03 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_04 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_05 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_06 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_07 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_08 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_09 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_10 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_11 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_12 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_13 LABELS gfortran llvmImplicit)
RUN(NAME implicit_interface_14 LABELS gfortran) # ! TODO: fix this test
RUN(NAME implicit_interface_15 LABELS gfortran llvm2 EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_15b.f90)
RUN(NAME implicit_interface_16 LABELS gfortran llvm2 EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_16b.f90)
RUN(NAME implicit_interface_17 LABELS gfortran llvm2 EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_17b.f90)
RUN(NAME implicit_interface_18 LABELS gfortran llvmImplicit EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_19 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface EXTRAFILES implicit_interface_19b.f90)
RUN(NAME implicit_interface_20 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_21 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --legacy-array-sections)
RUN(NAME implicit_interface_22 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_23 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_24 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_25 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_26 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_27 LABELS gfortran llvm EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_27b.f90)
RUN(NAME implicit_interface_28 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_29 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --separate-compilation EXTRAFILES implicit_interface_29b.f90)
RUN(NAME implicit_interface_30 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_interface_31 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_interface_32 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_33 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_34 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_35 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_interface_36 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_37 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --legacy-array-sections)
RUN(NAME implicit_interface_38 LABELS gfortran llvm EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_38b.f90)

RUN(NAME implicit_interface_40 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_interface_41 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_42 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_43 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_44 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_48 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_48b.f90 GFORTRAN_ARGS -fallow-argument-mismatch)
RUN(NAME implicit_interface_45 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_46 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_46b.f90 GFORTRAN_ARGS -fallow-argument-mismatch)
RUN(NAME implicit_interface_47 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_47b.f90)
RUN(NAME implicit_interface_49 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_49b.f90)
RUN(NAME implicit_interface_50 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_50b.f90)
RUN(NAME implicit_interface_51 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_51b.f90)
RUN(NAME implicit_interface_52 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_52b.f90)
RUN(NAME implicit_interface_53 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_55 LABELS gfortran llvm
    EXTRAFILES implicit_interface_55b.f90)
RUN(NAME implicit_interface_56 LABELS gfortran llvm
    EXTRA_ARGS --separate-compilation --implicit-interface
    EXTRAFILES implicit_interface_56b.f90)
RUN(NAME implicit_interface_57 LABELS gfortran llvm)
RUN(NAME implicit_interface_58 LABELS gfortran llvm)
RUN(NAME implicit_interface_60 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_61 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_61b.f90)
RUN(NAME implicit_interface_62 LABELS gfortran llvm
    EXTRA_ARGS --separate-compilation --implicit-interface
    EXTRAFILES implicit_interface_62b.f90)
RUN(NAME implicit_interface_63 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_63b.f90)
RUN(NAME implicit_interface_64 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_64b.f90)
RUN(NAME implicit_interface_65 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_66 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_interface_67 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_68 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_68b.f90)
RUN(NAME implicit_interface_69 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_69b.f90)
RUN(NAME implicit_interface_70 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_71 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_71c.f90 implicit_interface_71b.f90)
RUN(NAME implicit_interface_72 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_72b.f90)
RUN(NAME implicit_interface_73 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_74 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_74b.f90)
RUN(NAME implicit_interface_75 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_76 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_76b.f90)
RUN(NAME implicit_interface_77 LABELS gfortran llvm
    EXTRA_ARGS --separate-compilation --implicit-interface
    EXTRAFILES implicit_interface_77c.f90 implicit_interface_77b.f90)
RUN(NAME implicit_interface_78 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_78b.f90)
RUN(NAME implicit_interface_79 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_79b.f90)
RUN(NAME implicit_interface_80 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_80b.f90)
RUN(NAME implicit_interface_81 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_81b.f90)
RUN(NAME implicit_interface_82 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_82b.f90)
RUN(NAME implicit_interface_83 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_84 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_84b.f90)
RUN(NAME implicit_interface_85 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_86 LABELS gfortran llvm llvm_omp EXTRA_ARGS --implicit-interface
    GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_87 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_88 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_88b.f90 implicit_interface_88c.f90)
RUN(NAME implicit_interface_89 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_90 LABELS gfortran llvm llvm_omp EXTRA_ARGS --implicit-interface
    GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_91 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_92 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_93 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_94 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_95 LABELS gfortran llvm_omp EXTRA_ARGS --implicit-interface
    GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_96 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_97 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_98 LABELS gfortran llvm_omp EXTRA_ARGS --implicit-interface
    GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_99 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_100 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_101 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_102 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_103 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_104 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_105 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_106 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_107 LABELS gfortran llvm llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME implicit_interface_108 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_109 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_110 LABELS gfortran llvm EXTRA_ARGS --implicit-interface EXTRAFILES implicit_interface_110b.f90)
RUN(NAME implicit_interface_111 LABELS gfortran llvm EXTRA_ARGS --fixed-form --implicit-typing --implicit-interface GFORTRAN_ARGS -ffixed-form EXTRAFILES implicit_interface_111b.f90)
RUN(NAME implicit_interface_112 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_113 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_114 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_115 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_116 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_117 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_118 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_119 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_interface_120 LABELS gfortran llvm EXTRA_ARGS --implicit-interface
    EXTRAFILES implicit_interface_120_m.f90)
RUN(NAME implicit_interface_121 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # locally typed external function defined later in the file (#4376)
RUN(NAME implicit_interface_122 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # generic call with a derived-type component array section (#11668)
RUN(NAME implicit_none_external_01 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)

RUN(NAME implicit_typing_01 LABELS gfortran llvmImplicit)
RUN(NAME implicit_typing_02 LABELS gfortran llvmImplicit)
RUN(NAME implicit_typing_03 LABELS gfortran llvmImplicit)
RUN(NAME implicit_typing_04 LABELS gfortran llvmImplicit EXTRA_ARGS --implicit-interface)
RUN(NAME implicit_typing_05 LABELS gfortran llvm  EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_07 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_08 LABELS gfortran llvm c cpp EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --implicit-typing --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME implicit_typing_10 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_11 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_12 LABELS gfortran llvm c EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_13 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_14 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_15 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_typing_16 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_17 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME implicit_typing_18 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME implicit_typing_21 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # IMPLICIT of a main program with internal procedures
RUN(NAME implicit_typing_22 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # IMPLICIT of a module procedure with internal procedures
RUN(NAME implicit_typing_23 LABELS gfortran llvm EXTRA_ARGS --implicit-typing) # implicit none (external) keeps implicit typing

RUN(NAME generic_name_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME generic_name_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME generic_name_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME generic_name_04 LABELS gfortran llvm)
RUN(NAME generic_name_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME generic_name_06 LABELS gfortran llvm)
RUN(NAME generic_name_07 LABELS gfortran llvm)
RUN(NAME generic_name_08 LABELS gfortran llvm)
RUN(NAME generic_name_09 LABELS gfortran llvm)
RUN(NAME generic_name_10 LABELS gfortran llvm)
RUN(NAME generic_name_11 LABELS gfortran llvm)
RUN(NAME generic_name_12 LABELS gfortran llvm)
RUN(NAME generic_name_13 LABELS gfortran llvm) # generic interface named lgt overloading the intrinsic with derived-type arguments (#3592)
RUN(NAME generic_interface_dummy_procedure_01 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_02 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_03 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_04 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_05 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_06 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_07 LABELS gfortran llvm)
RUN(NAME generic_interface_dummy_procedure_08 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME generic_interface_external_procedure_01 LABELS gfortran llvm)
RUN(NAME generic_interface_external_procedure_02 LABELS gfortran llvm)
RUN(NAME generic_interface_distinguishable_01 LABELS gfortran llvm)
RUN(NAME generic_interface_distinguishable_02 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --implicit-typing)
# No gfortran label: GFortran 15 rejects the kind-specific passed-object
# dummies class(pt(4))/class(pt(8)) of a type-bound generic (valid per F2018
# C760, which constrains only length type parameters); GFortran 16 and Flang
# accept it.
RUN(NAME generic_interface_distinguishable_03 LABELS llvm)
RUN(NAME generic_interface_distinguishable_04 LABELS gfortran llvm)
RUN(NAME generic_interface_distinguishable_06 LABELS gfortran llvm)
RUN(NAME generic_interface_distinguishable_07 LABELS gfortran llvm)
RUN(NAME operator_interface_dummy_procedure_01 LABELS gfortran llvm)
RUN(NAME operator_interface_scope_01 LABELS gfortran llvm)

RUN(NAME operator_overloading_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_04 LABELS gfortran llvm)
RUN(NAME operator_overloading_05_module3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
    operator_overloading_05_module1.f90 operator_overloading_05_module2.f90)
RUN(NAME operator_overloading_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_34 LABELS gfortran llvm EXTRAFILES
    operator_overloading_34_mod.f90)
RUN(NAME operator_overloading_35 LABELS gfortran llvm EXTRAFILES
    operator_overloading_35_mod.f90)
RUN(NAME operator_overloading_36 LABELS gfortran llvm_submodule EXTRAFILES
    operator_overloading_36_mod_base.f90 operator_overloading_36_mod_base_sub.f90)
RUN(NAME operator_overloading_37 LABELS gfortran llvm)
RUN(NAME operator_overloading_38 LABELS gfortran llvm)
RUN(NAME operator_overloading_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME operator_overloading_40 LABELS gfortran llvm)
RUN(NAME operator_overloading_41 LABELS gfortran llvm)
RUN(NAME operator_overloading_42 LABELS gfortran llvm)
RUN(NAME operator_overloading_43 LABELS gfortran llvm)
RUN(NAME operator_overloading_44 LABELS gfortran llvm)
RUN(NAME operator_overloading_45 LABELS gfortran llvm)
RUN(NAME operator_overloading_46 LABELS gfortran llvm)
RUN(NAME operator_overloading_47 LABELS gfortran llvm)
RUN(NAME operator_overloading_48 LABELS gfortran llvm)
RUN(NAME operator_overloading_49 LABELS gfortran llvm)
RUN(NAME operator_overloading_50 LABELS gfortran llvm)
RUN(NAME operator_overloading_51 LABELS gfortran llvm)
RUN(NAME operator_overloading_52 LABELS gfortran llvm)
RUN(NAME operator_overloading_53 LABELS gfortran llvm)
RUN(NAME operator_overloading_override_01 LABELS gfortran llvm)

RUN(NAME custom_unary_operator_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_unary_operator_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME custom_operator_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME custom_operator_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_14 LABELS gfortran llvm)
RUN(NAME custom_operator_15 LABELS gfortran llvm)
RUN(NAME custom_operator_16 LABELS gfortran llvm)
RUN(NAME custom_operator_17 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME custom_operator_18 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME custom_operator_19 LABELS gfortran llvm)
RUN(NAME custom_operator_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME custom_operator_21 LABELS gfortran llvm)
RUN(NAME custom_operator_22 LABELS gfortran llvm)

RUN(NAME types_07 LABELS gfortran)
RUN(NAME types_08 LABELS gfortran)
RUN(NAME types_09 LABELS gfortran llvm)
RUN(NAME types_10 LABELS gfortran llvm)
RUN(NAME types_11 LABELS gfortran llvm)
RUN(NAME types_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME types_13 LABELS gfortran)
RUN(NAME types_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME types_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME types_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME types_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME types_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)

RUN(NAME complex_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_03 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_07 LABELS gfortran llvm) # cmplx
RUN(NAME complex_08 LABELS gfortran llvm fortran) # conjg
RUN(NAME complex_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # cmplx
RUN(NAME complex_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # conjg
RUN(NAME complex_11 LABELS gfortran llvmImplicit wasm fortran)
RUN(NAME complex_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_35 LABELS gfortran llvm)
RUN(NAME complex_36 LABELS gfortran llvm)
RUN(NAME complex_37 LABELS gfortran llvm)
RUN(NAME complex_38 LABELS gfortran llvm)
RUN(NAME complex_39 LABELS gfortran llvm)
RUN(NAME complex_40 LABELS gfortran llvm)
RUN(NAME complex_41 LABELS gfortran llvm)
RUN(NAME complex_42 LABELS gfortran llvm)
RUN(NAME complex_43 LABELS gfortran llvm)
RUN(NAME complex_44 LABELS gfortran llvm)
RUN(NAME complex_45 LABELS gfortran llvm)
RUN(NAME complex_46 LABELS gfortran llvm)
RUN(NAME complex_47 LABELS gfortran llvm c wasm)
RUN(NAME complex_48 LABELS gfortran llvm)
RUN(NAME complex_49 LABELS gfortran llvm) # complex array minus scalar inside sum(dim) with a spec-function result extent (#3780)
RUN(NAME complex_50 LABELS gfortran llvm) # complex(8) compared with default real constants (#3417)
RUN(NAME complex_allocatable_scalar_01 LABELS gfortran llvm)
RUN(NAME complex_array_member_access LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_implicit_cast LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME complex_sub_test LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_mul_test LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME complex_div_test LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_pow_test LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME complex_unary_minus_03 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME dcmplx_01 LABELS gfortran llvm) # dcmplx, dconjg
RUN(NAME logical_to_integer_cast LABELS gfortran llvm EXTRA_ARGS --logical-casting NO_STD_F23)

RUN(NAME logical1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME logical2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME logical3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME logical4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME logical_casting_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran
    EXTRA_ARGS --logical-casting NO_STD_F23)
RUN(NAME logical_array_cast_01 LABELS gfortran llvm)

RUN(NAME logical_kind_01 LABELS gfortran llvm)
RUN(NAME logical_kind_02 LABELS gfortran llvm)
RUN(NAME logical_kind_03 LABELS gfortran llvm)
RUN(NAME logical_kind_07 LABELS gfortran llvm)
RUN(NAME logical_kind_04 LABELS gfortran llvm)
RUN(NAME logical_kind_05 LABELS gfortran llvm EXTRA_ARGS --fixed-form)
RUN(NAME logical_kind_06 LABELS gfortran llvm)
# Runs only under the llvm label: the test relies on short-circuit
# evaluation, which the standard permits but does not require, so it is
# only valid with --logical-short-circuit (gfortran gives no such guarantee).
RUN(NAME logical_short_circuit_01 LABELS llvm EXTRA_ARGS --logical-short-circuit)

RUN(NAME tsunami LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)

RUN(NAME pdt_01 LABELS gfortran llvm)
RUN(NAME pdt_02 LABELS gfortran llvm EXTRAFILES pdt_02_module.f90)
RUN(NAME pdt_03 LABELS gfortran llvm)
RUN(NAME pdt_04 LABELS gfortran llvm)
RUN(NAME pdt_05 LABELS gfortran llvm)
RUN(NAME pdt_06 LABELS gfortran llvm EXTRAFILES pdt_06_module.f90)
RUN(NAME pdt_07 LABELS gfortran llvm)
RUN(NAME pdt_08 LABELS gfortran llvm)
RUN(NAME pdt_09 LABELS llvm)
RUN(NAME pdt_10 LABELS llvm)
RUN(NAME pdt_11 LABELS llvm EXTRAFILES pdt_11_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME pdt_12 LABELS llvm)
RUN(NAME pdt_13 LABELS llvm EXTRA_ARGS --separate-compilation)
RUN(NAME pdt_14 LABELS llvm EXTRA_ARGS --separate-compilation)
RUN(NAME pdt_15 LABELS gfortran llvm)
RUN(NAME pdt_16 LABELS gfortran llvm)
RUN(NAME pdt_17 LABELS llvm flang)
RUN(NAME pdt_18 LABELS llvm flang)
# gfortran rejects a default initializer on a component whose kind is a kind
# parameter of the type, so this test is not labelled `gfortran`
RUN(NAME pdt_19 LABELS llvm flang)
RUN(NAME pdt_20 LABELS gfortran llvm)
# GFortran 13 gives wrong values for default initializers of components that
# depend on a kind parameter, so this test is not labelled `gfortran`
RUN(NAME pdt_21 LABELS llvm)
RUN(NAME pdt_22 LABELS gfortran llvm)

RUN(NAME derived_types_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_02 LABELS gfortran llvm)
RUN(NAME derived_types_03 LABELS gfortran llvm)
RUN(NAME derived_types_04 LABELS gfortran llvm)
RUN(NAME derived_types_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_05 LABELS gfortran llvm)
RUN(NAME derived_types_07 LABELS gfortran llvm)
RUN(NAME derived_types_08 LABELS gfortran llvm)
RUN(NAME derived_types_09 LABELS gfortran EXTRAFILES
        derived_types_09b.f90 derived_types_09c.f90)
RUN(NAME derived_types_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_15 LABELS gfortran llvm)
RUN(NAME derived_types_14 LABELS gfortran
        EXTRAFILES derived_types_14_module.f90)
RUN(NAME derived_types_16_module LABELS gfortran)
RUN(NAME derived_types_18 LABELS gfortran)
RUN(NAME derived_types_19 LABELS gfortran
        EXTRAFILES derived_types_19_module.f90)
RUN(NAME derived_types_20 LABELS gfortran
        EXTRAFILES derived_types_20_module2.f90
                   derived_types_20_module1.f90)
RUN(NAME derived_types_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME derived_types_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME derived_types_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_32 LABELS gfortran)
RUN(NAME derived_types_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN derived_types_35_file.txt)
RUN(NAME derived_types_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_40 LABELS gfortran llvm)
RUN(NAME derived_types_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_65 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_68 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_69 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
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-arrays)
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_types_77 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_78 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_79 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_80 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_81 LABELS gfortran llvm)
RUN(NAME derived_types_82 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_83 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_84 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES derived_types_84_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_85 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_86 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_87 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_88 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_89 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME derived_types_90 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME derived_types_91 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_92 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_93 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_94 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_96 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_97 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
        EXTRAFILES derived_types_97_mod1.f90 derived_types_97_mod2.f90)
RUN(NAME derived_types_98 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_99 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_100 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_101 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_102 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_103 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME derived_types_104 LABELS gfortran llvm)
RUN(NAME derived_types_105 LABELS gfortran llvm)
RUN(NAME derived_types_106 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_107 LABELS gfortran llvm)
RUN(NAME derived_types_108 LABELS gfortran llvm)
RUN(NAME derived_types_109 LABELS gfortran llvm)
RUN(NAME derived_types_110 LABELS gfortran llvm)
RUN(NAME derived_types_111 LABELS gfortran llvm)
RUN(NAME derived_types_112 LABELS llvm)
RUN(NAME derived_types_113 LABELS gfortran llvm)
RUN(NAME derived_types_114 LABELS gfortran llvm
        EXTRAFILES derived_types_114_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_115 LABELS gfortran llvm
        EXTRAFILES derived_types_115_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_116 LABELS gfortran llvm)
RUN(NAME derived_types_117 LABELS gfortran llvm)
RUN(NAME derived_types_118 LABELS gfortran llvm)
RUN(NAME derived_types_119 LABELS gfortran llvm)
RUN(NAME derived_types_120 LABELS gfortran llvm)
RUN(NAME derived_types_121 LABELS gfortran llvm
        EXTRAFILES derived_types_121_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_122 LABELS gfortran llvm)
RUN(NAME derived_types_123 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME derived_types_124 LABELS gfortran llvm)
RUN(NAME derived_types_125 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_126 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_127 LABELS gfortran llvm)
RUN(NAME derived_types_128 LABELS gfortran llvm)
RUN(NAME derived_types_129 LABELS gfortran llvm)
RUN(NAME derived_types_130 LABELS gfortran llvm)
RUN(NAME derived_types_131 LABELS gfortran llvm)
RUN(NAME derived_types_132 LABELS gfortran llvm)
RUN(NAME derived_types_133 LABELS gfortran llvm)
RUN(NAME derived_types_134 LABELS gfortran llvm EXTRAFILES derived_types_134_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_135 LABELS gfortran llvm)
RUN(NAME derived_types_136 LABELS gfortran llvm)
RUN(NAME derived_types_137 LABELS gfortran llvm)
RUN(NAME derived_types_138 LABELS gfortran llvm)
RUN(NAME derived_types_139 LABELS gfortran llvm)
RUN(NAME derived_types_140 LABELS gfortran llvm)
RUN(NAME derived_types_141 LABELS gfortran llvm)
RUN(NAME derived_types_142 LABELS gfortran llvm)
RUN(NAME derived_types_apply_clip_01 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_143 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_144 LABELS gfortran llvm)
RUN(NAME derived_types_145 LABELS llvm)
RUN(NAME derived_types_146 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME derived_types_147 LABELS gfortran llvm)
RUN(NAME derived_types_148 LABELS gfortran llvm)
RUN(NAME derived_types_149 LABELS gfortran llvm)
RUN(NAME derived_types_150 LABELS gfortran llvm) # SEQUENCE char(len>1) inline + storage_size + memcpy
# Non-elemental defined assignment(=) with scalar dummies (F2023 10.2.1.3–4).
# Free-interface case is a separate file: coexisting with type-bound
# assignment(=) in one module breaks resolution under LFortran.
RUN(NAME derived_types_151 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME derived_types_152 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME derived_types_153 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME derived_types_154 LABELS gfortran llvm)
RUN(NAME derived_types_155 LABELS gfortran llvm)
RUN(NAME derived_types_156 LABELS gfortran llvm)
RUN(NAME derived_types_157 LABELS gfortran llvm)
RUN(NAME derived_types_158 LABELS gfortran llvm)
RUN(NAME derived_types_159 LABELS gfortran llvm)
RUN(NAME derived_types_160 LABELS gfortran llvm)
RUN(NAME derived_types_161 LABELS gfortran llvm)
RUN(NAME derived_types_162 LABELS gfortran llvm)
RUN(NAME derived_types_163 LABELS gfortran llvm)
RUN(NAME derived_types_164 LABELS gfortran llvm EXTRAFILES derived_types_164_a.f90 derived_types_164_b.f90 derived_types_164_c.f90)
RUN(NAME derived_types_165 LABELS gfortran llvm)
RUN(NAME derived_types_166 LABELS gfortran llvm EXTRAFILES derived_types_166_a.f90 derived_types_166_b.f90 derived_types_166_c.f90)
RUN(NAME derived_types_167 LABELS gfortran llvm)
RUN(NAME derived_types_168 LABELS gfortran llvm)
RUN(NAME derived_types_170 LABELS gfortran llvm EXTRAFILES derived_types_170_m.f90)
RUN(NAME derived_types_171 LABELS gfortran llvm)
RUN(NAME derived_types_172 LABELS gfortran llvm)
RUN(NAME derived_types_173 LABELS gfortran llvm EXTRAFILES derived_types_173_m.f90)
RUN(NAME derived_types_174 LABELS gfortran llvm EXTRAFILES derived_types_174_m.f90)
RUN(NAME derived_types_175 LABELS gfortran llvm EXTRAFILES derived_types_175_m.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME derived_types_176 LABELS gfortran llvm EXTRAFILES derived_types_176_m.f90)
RUN(NAME derived_types_177 LABELS gfortran llvm)
RUN(NAME derived_types_178 LABELS gfortran llvm EXTRAFILES derived_types_178_m.f90)
RUN(NAME derived_types_181 LABELS gfortran llvm)
RUN(NAME derived_types_182 LABELS gfortran llvm)
RUN(NAME derived_types_183 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_185 LABELS gfortran llvm)
RUN(NAME derived_types_186 LABELS gfortran llvm)
RUN(NAME derived_types_187 LABELS gfortran llvm)
RUN(NAME derived_types_188 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_189 LABELS gfortran llvm)
RUN(NAME derived_types_190 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_191 LABELS gfortran llvm)
RUN(NAME derived_types_192 LABELS gfortran llvm)
RUN(NAME derived_types_193 LABELS gfortran llvm)
RUN(NAME derived_types_194 LABELS gfortran llvm)
RUN(NAME derived_types_195 LABELS gfortran llvm)
RUN(NAME derived_types_196 LABELS gfortran llvm)
RUN(NAME derived_types_197 LABELS gfortran llvm)
RUN(NAME derived_types_198 LABELS gfortran llvm)
RUN(NAME derived_types_199 LABELS gfortran llvm)
RUN(NAME derived_types_201 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_202 LABELS gfortran llvm)
RUN(NAME derived_types_203 LABELS gfortran llvm)
RUN(NAME derived_types_204 LABELS gfortran llvm)
RUN(NAME derived_types_205 LABELS gfortran llvm)
RUN(NAME derived_types_206 LABELS gfortran llvm)
RUN(NAME derived_types_207 LABELS gfortran llvm)
RUN(NAME derived_types_208 LABELS gfortran llvm)
# The LLVM backend does not treat the two definitions of the sequence type as
# the same type yet (#13782); see derived_types_209.f90.
RUN(NAME derived_types_209 LABELS gfortran fortran)
RUN(NAME derived_types_213 LABELS gfortran llvm)
RUN(NAME derived_types_214 LABELS llvm) # gfortran segfaults on reshape () of a polymorphic array passed to a class dummy
RUN(NAME derived_types_215 LABELS gfortran llvm)
RUN(NAME derived_types_216 LABELS gfortran llvm)
RUN(NAME derived_types_217 LABELS gfortran llvm)
RUN(NAME derived_types_218 LABELS gfortran llvm)
RUN(NAME derived_types_219 LABELS gfortran llvm)
RUN(NAME derived_types_220 LABELS gfortran llvm)
RUN(NAME derived_types_221 LABELS gfortran llvm)
RUN(NAME derived_types_222 LABELS gfortran llvm)
RUN(NAME derived_types_223 LABELS gfortran llvm)
RUN(NAME derived_types_224 LABELS gfortran llvm)
RUN(NAME derived_types_225 LABELS gfortran llvm)
RUN(NAME derived_types_226 LABELS gfortran llvm)
RUN(NAME derived_types_227 LABELS gfortran llvm)
RUN(NAME derived_types_228 LABELS gfortran llvm)
RUN(NAME derived_types_229 LABELS gfortran llvm)
RUN(NAME derived_types_230 LABELS gfortran llvm)
RUN(NAME derived_types_232 LABELS gfortran llvm)
RUN(NAME derived_types_233 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_234 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME derived_types_236 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # assumed-size derived-type dummy is not a descriptor (#15406)
RUN(NAME derived_types_237 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections) # sequence association with an assumed-size derived-type dummy (#15406)
RUN(NAME derived_types_238 LABELS gfortran llvm) # component operands read in place (#16215)
RUN(NAME derived_types_239 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays) # component operands with a reallocated target (#16215)
RUN(NAME derived_types_240 LABELS llvm flang) # not gfortran: GFortran 16.2 miscompiles component operands aliased with the target through pointers (#16215)
RUN(NAME derived_types_241 LABELS gfortran llvm) # same component of different variables read in place (#16215)
RUN(NAME derived_types_242 LABELS llvm flang) # not gfortran: GFortran 16.2 miscompiles a component overlapping through an associate name (#16215)
RUN(NAME derived_types_243 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays) # same component of different variables with a reallocated target (#16215)
RUN(NAME derived_types_244 LABELS gfortran llvm) # TARGET component subscript aliases the assignment target (#16215)
RUN(NAME derived_types_245 LABELS gfortran llvm) # result destination reached through a pointer component (#16191)
RUN(NAME derived_types_246 LABELS gfortran llvm) # allocatable array component of its own type (#14189)
RUN(NAME derived_types_247 LABELS llvm) # not gfortran: GFortran 15.3 copies recursive allocatable components shallowly (#14189)
RUN(NAME derived_types_248 LABELS gfortran llvm EXTRAFILES derived_types_248_module1.f90 derived_types_248_module2.f90 EXTRA_ARGS --separate-compilation) # same-named types in two modules (#14189)
RUN(NAME derived_types_249 LABELS gfortran llvm) # recursive type passed to a class(t) dummy (#16523)
RUN(NAME derived_types_250 LABELS gfortran llvm EXTRAFILES derived_types_250_module1.f90 derived_types_250_module2.f90 EXTRA_ARGS --separate-compilation) # same-named procedure-local and BLOCK types in two modules (#14189)
RUN(NAME derived_types_251 LABELS gfortran llvm EXTRAFILES derived_types_251_module1.f90 derived_types_251_module2.f90 EXTRA_ARGS --separate-compilation) # module a with type b_node next to module a_b with type node (#14189)
RUN(NAME derived_types_252 LABELS gfortran llvm) # element of an array component of each element of a derived-type array, a%x(2)%u(2) (#13629)
RUN(NAME derived_types_253 LABELS gfortran llvm) # scalar component of an element of an array component, a%x(2)%u (#13629)
RUN(NAME derived_types_254 LABELS gfortran llvm) # pointer array component of a component, a%b%p, passed to an explicit-shape dummy (#16887)
RUN(NAME derived_types_255 LABELS gfortran llvm EXTRAFILES derived_types_255c.c EXTRA_ARGS --separate-compilation) # default initialization of an array component of a module variable, used from a C main
RUN(NAME derived_types_256 LABELS gfortran llvm) # deferred-length character components inherited from the parent type (#7210)
RUN(NAME derived_types_257 LABELS gfortran llvm) # local derived type with the same name as a non-imported module type (#5874)
RUN(NAME parent_component_01 LABELS gfortran llvm) # parent component reference, v%a_t, with the types in a program or procedure (#13073)
RUN(NAME derived_types_vector_subscript_01 LABELS gfortran llvm) # vector subscript then component, c(idx)%n and z(idx)%re (#16913)
RUN(NAME defined_assignment_01 LABELS llvm flang)
RUN(NAME defined_assignment_02 LABELS gfortran llvm)
RUN(NAME defined_assignment_03 LABELS gfortran llvm)
RUN(NAME defined_assignment_elemental_01 LABELS gfortran llvm)
RUN(NAME defined_assignment_elemental_02 LABELS gfortran llvm)
RUN(NAME defined_assignment_override_01 LABELS gfortran llvm)
RUN(NAME defined_assignment_same_name_01 LABELS gfortran llvm)
RUN(NAME defined_assignment_free_interface_01 LABELS gfortran llvm flang)

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)
RUN(NAME derived_type_with_default_init_02 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_03 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_04 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_05 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_06 LABELS llvm flang) # gfortran 14 and older do not apply a component default of a type with a finalizer to an intent(out) dummy
RUN(NAME derived_type_with_default_init_07 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_08 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_09 LABELS gfortran llvm)
RUN(NAME derived_type_with_default_init_10 LABELS gfortran llvm)
RUN(NAME derived_type_nested_parameter_init_01 LABELS gfortran llvm)
RUN(NAME derived_type_nested_parameter_init_02 LABELS gfortran llvm)
RUN(NAME derived_type_nested_parameter_init_03 LABELS gfortran llvm)
RUN(NAME derived_type_nested_parameter_init_04 LABELS gfortran llvm)
RUN(NAME derived_type_nested_parameter_init_05 LABELS gfortran llvm)
RUN(NAME derived_type_c_funptr_array_01 LABELS gfortran llvm)
RUN(NAME derived_type_c_ptr_array_ctor_01 LABELS gfortran llvm)
RUN(NAME multi_file_member_access_01 LABELS gfortran llvm llvm_single_invocation EXTRAFILES multi_file_member_access_01_mod.f90)
RUN(NAME multi_file_member_access_02 LABELS gfortran llvm_single_invocation EXTRAFILES multi_file_member_access_02_mod.f90)
RUN(NAME type_bound_generic_member_access_01 LABELS gfortran llvm)
RUN(NAME type_bound_generic_member_access_02 LABELS gfortran llvm)
RUN(NAME type_bound_generic_member_access_03 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME type_bound_generic_extend_01 LABELS gfortran llvm)
RUN(NAME type_bound_generic_pass_01 LABELS gfortran llvm)
RUN(NAME type_bound_private_01 LABELS gfortran llvm)
RUN(NAME type_bound_private_02 LABELS gfortran llvm)
RUN(NAME type_bound_private_03 LABELS gfortran llvm)
RUN(NAME type_bound_private_04 LABELS llvm)
RUN(NAME type_bound_private_05 LABELS llvm EXTRAFILES type_bound_private_05a.f90 type_bound_private_05b.f90) # separate compilation of #16272
RUN(NAME type_bound_private_06 LABELS llvm)
RUN(NAME type_bound_private_07 LABELS llvm)
RUN(NAME type_bound_private_08 LABELS llvm) # GFortran rejects the new same-named bindings as overrides
RUN(NAME type_bound_private_09 LABELS llvm) # GFortran rejects the new same-named binding as an override
RUN(NAME type_bound_private_10 LABELS gfortran llvm)
RUN(NAME type_bound_private_11 LABELS llvm) # GFortran rejects the new deferred binding as an override

RUN(NAME type_parameter_inquiry_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME line_continuation_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME line_continuation_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME line_continuation_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME line_continuation_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME line_continuation_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME line_continuation_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME program_01 LABELS gfortran)
RUN(NAME program_02 LABELS gfortran llvm)
RUN(NAME program_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME program_04 LABELS gfortran llvm)
RUN(NAME program_05 LABELS gfortran llvm)
RUN(NAME program_06 LABELS gfortran llvm)
RUN(NAME llvm_target_options_mcpu_01 FILE llvm_target_options_01 LABELS gfortran llvm EXTRA_ARGS --mcpu=native)
RUN(NAME llvm_target_options_march_01 FILE llvm_target_options_01 LABELS llvm EXTRA_ARGS --march=native)
RUN(NAME llvm_target_options_mtune_01 FILE llvm_target_options_01 LABELS llvm EXTRA_ARGS --mtune=native)
RUN(NAME init_values LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME param_pass_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)

RUN(NAME runtime_allocator_accessors_01 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays fortran)
RUN(NAME allocate_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME allocate_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME allocate_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
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 allocate_source_ptr_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_source_ptr_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_source_stat_01 LABELS gfortran llvm)
RUN(NAME allocate_source_component_01 LABELS gfortran llvm)
RUN(NAME allocate_source_empty_polymorphic_01 LABELS gfortran llvm)
RUN(NAME allocate_array_descriptor_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)

RUN(NAME allocate_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_49 LABELS gfortran llvm)
RUN(NAME allocate_51 LABELS gfortran llvm)
RUN(NAME allocate_52 LABELS gfortran llvm)
RUN(NAME allocate_53 LABELS gfortran llvm)
RUN(NAME allocate_54 LABELS gfortran llvm)
RUN(NAME allocate_55 LABELS gfortran llvm)
RUN(NAME allocate_56 LABELS gfortran llvm)
RUN(NAME allocate_57 LABELS gfortran llvm)
RUN(NAME allocate_58 LABELS gfortran llvm)
RUN(NAME allocate_59 LABELS gfortran llvm)
RUN(NAME allocate_60 LABELS gfortran llvm)
RUN(NAME allocate_61 LABELS gfortran llvm EXTRAFILES allocate_61_mod.f90 allocate_61_mod2.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME allocate_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME allocate_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_65 LABELS gfortran llvm)
RUN(NAME allocate_66 LABELS gfortran llvm)
RUN(NAME allocate_67 LABELS gfortran llvm)
RUN(NAME allocate_68 LABELS gfortran llvm)
RUN(NAME allocate_69 LABELS gfortran llvm)
RUN(NAME allocate_70 LABELS gfortran llvm)
RUN(NAME allocate_71 LABELS gfortran llvm)
RUN(NAME allocate_72 LABELS gfortran llvm)
RUN(NAME allocate_73 LABELS gfortran llvm)
RUN(NAME allocate_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocate_75 LABELS gfortran llvm fortran)
RUN(NAME allocate_76 LABELS gfortran llvm)
RUN(NAME allocate_77 LABELS gfortran llvm c) # allocation on assignment of a derived-type scalar with the C backend (#15949)
RUN(NAME allocate_78 LABELS gfortran llvm) # typed allocation with a named-constant kind (#14384)
RUN(NAME allocate_79 LABELS gfortran llvm) # allocate with source= and no shape spec into a previously deallocated array (#8332)
RUN(NAME allocate_80 LABELS gfortran llvm) # allocate(source=) from a deferred-length character scalar (#3640)
RUN(NAME allocate_81 LABELS gfortran llvm) # allocate(mold=) and allocate(source=) with derived-type array components (#5400)
RUN(NAME allocate_pointer_associated_01 LABELS gfortran llvm) # allocate an already associated pointer (#16072, #13028)

RUN(NAME realloc_lhs_01 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_16 LABELS gfortran llvm
    EXTRA_ARGS -fdefault-integer-8 --realloc-lhs-arrays
    GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME realloc_lhs_17 FILE realloc_lhs_16 LABELS llvm
    EXTRA_ARGS --descriptor-index-64 --realloc-lhs-arrays)
RUN(NAME realloc_lhs_18 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_19 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_20 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_21 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_22 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_23 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_24 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_25 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_26 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_27 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_28 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_29 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_30 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_31 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME realloc_lhs_32 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays) # same shape is not reallocated (#15956)
RUN(NAME realloc_lhs_33 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays) # allocatable function result defined by intrinsic assignment from an array expression (#3299)

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)
RUN(NAME automatic_allocation_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --std=f23)
RUN(NAME automatic_array_01 LABELS gfortran llvm cuda)
RUN(NAME automatic_array_02 LABELS gfortran llvm)
RUN(NAME automatic_array_03 LABELS gfortran llvm)
RUN(NAME automatic_array_04 LABELS gfortran llvm)
RUN(NAME automatic_array_05 LABELS gfortran llvm)
RUN(NAME automatic_array_06 LABELS gfortran llvm)
RUN(NAME automatic_array_07 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME automatic_array_08 LABELS gfortran llvm)
RUN(NAME automatic_array_09 LABELS gfortran llvm)
RUN(NAME automatic_array_10 LABELS gfortran llvm cuda metal)
RUN(NAME automatic_array_11 LABELS gfortran llvm cuda metal)
RUN(NAME automatic_array_12 LABELS gfortran llvm)

RUN(NAME block_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME block_02 LABELS gfortran llvm fortran)
RUN(NAME block_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME block_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME block_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME block_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME block_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME block_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME block_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME block_10 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME block_11 LABELS gfortran llvm)
RUN(NAME block_12 LABELS gfortran llvm)
RUN(NAME block_13 LABELS gfortran llvm)
RUN(NAME block_14 LABELS gfortran llvm)
RUN(NAME block_15 LABELS gfortran llvm EXTRAFILES block_15_mod.f90)
RUN(NAME block_16 LABELS gfortran llvm)
RUN(NAME block_17 LABELS gfortran llvm)
RUN(NAME block_18 LABELS gfortran llvm)
RUN(NAME block_19 LABELS gfortran llvm)
RUN(NAME block_20 LABELS gfortran llvm)
RUN(NAME block_21 LABELS gfortran llvm)
RUN(NAME block_22 LABELS gfortran llvm EXTRAFILES block_22_procs.f90)
RUN(NAME block_23 LABELS gfortran llvm)
RUN(NAME block_24 LABELS gfortran llvm EXTRAFILES block_24_procs.f90)
RUN(NAME block_25 LABELS gfortran llvm wasm)
RUN(NAME block_26 LABELS gfortran llvm)
RUN(NAME block_27 LABELS gfortran llvm)
RUN(NAME block_28 LABELS gfortran llvm EXTRAFILES block_28_b.f90 block_28_a.f90)
RUN(NAME block_29 LABELS gfortran llvm)
RUN(NAME block_30 LABELS gfortran llvm)
RUN(NAME block_31 LABELS gfortran llvm)
RUN(NAME block_32 LABELS gfortran llvm)
RUN(NAME block_33 LABELS gfortran llvm)
RUN(NAME block_34 LABELS gfortran llvm)
RUN(NAME block_35 LABELS gfortran llvm)
RUN(NAME block_36 LABELS gfortran llvm)
RUN(NAME block_37 LABELS gfortran llvm)
RUN(NAME associate_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_08 LABELS gfortran llvm)
RUN(NAME associate_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
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 associate_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_24 LABELS gfortran llvm)
RUN(NAME associate_25 LABELS gfortran llvm)
RUN(NAME associate_26 LABELS llvm)
RUN(NAME associate_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME associate_28 LABELS gfortran llvm)
RUN(NAME associate_29 LABELS gfortran llvm)
RUN(NAME associate_30 LABELS gfortran llvm)
RUN(NAME associate_31 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME associate_32 LABELS llvm)
RUN(NAME associate_33 LABELS gfortran llvm)
RUN(NAME associate_34 LABELS gfortran llvm)
RUN(NAME associate_35 LABELS gfortran llvm)
RUN(NAME associate_36 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME associate_37 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME associate_38 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME associate_39 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME associate_40 LABELS gfortran llvm)
RUN(NAME associate_41 LABELS gfortran llvm)
RUN(NAME associate_42 LABELS gfortran llvm)
RUN(NAME associate_43 LABELS gfortran llvm)
RUN(NAME associate_44 LABELS gfortran llvm)
RUN(NAME associate_45 LABELS gfortran llvm)
RUN(NAME associate_46 LABELS gfortran llvm)
RUN(NAME associate_47 LABELS gfortran llvm)
RUN(NAME associate_48 LABELS gfortran llvm)
RUN(NAME associate_49 LABELS gfortran llvm)
RUN(NAME associate_50 LABELS gfortran llvm)
RUN(NAME associate_51 LABELS gfortran llvm)
RUN(NAME associate_52 LABELS gfortran llvm)
RUN(NAME associate_53 LABELS gfortran llvm)
RUN(NAME associate_54 LABELS gfortran llvm)
RUN(NAME associate_55 LABELS gfortran llvm)
RUN(NAME associate_56 LABELS llvm)
RUN(NAME associate_57 LABELS gfortran llvm)
RUN(NAME associate_58 LABELS gfortran llvm)
RUN(NAME associate_59 LABELS llvm)
RUN(NAME associate_60 LABELS llvm) # gfortran skips the temporary for associate names of overlapping sections
RUN(NAME associate_61 LABELS llvm) # gfortran aliases a parenthesized (expression) selector instead of copying it, and rejects the (str(2:4)) selector
RUN(NAME associate_62 LABELS gfortran llvm)
RUN(NAME associate_63 LABELS gfortran llvm)
RUN(NAME associate_64 LABELS gfortran llvm)
RUN(NAME associate_65 LABELS gfortran llvm)
RUN(NAME associate_66 LABELS gfortran llvm)
RUN(NAME associate_67 LABELS gfortran llvm)

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)
RUN(NAME attr_dim_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmImplicit fortran)
RUN(NAME attr_dim_05 LABELS gfortran llvm)
RUN(NAME attr_dim_06 LABELS gfortran llvm)

RUN(NAME real_dp_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME real_dp_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME bin_op_real_dp LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME bin_op_real_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME bin_op_real_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME const_real_dp LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME real_dp_param LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME int_dp LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME int_dp_param LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_dp LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME bin_op_complex_dp LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME complex_dp_param LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME const_kind_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME const_kind_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME kinds_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME kinds_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME kinds_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME const_array_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME const_array_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)

RUN(NAME concat_char_arrays_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME huge_string_read LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME string_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp wasm fortran)
RUN(NAME string_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME string_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # lge, lgt lle, llt
RUN(NAME string_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) # achar
RUN(NAME string_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # len
RUN(NAME string_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
COMPILE(NAME string_30 COMPILERS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_38 LABELS gfortran llvm
    EXTRA_ARGS -fdefault-integer-8
    GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME string_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME string_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_58 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES string_62b.f90)
RUN(NAME string_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_65 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_68 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_69 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_72 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_73 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_75 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_76 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_77 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_78 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_79 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_80 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_81 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_82 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_83 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_84 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_85 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_86 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_87 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_88 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays) # remove gfortran label, as functionality gave incorrect results
RUN(NAME string_89 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_90 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_91 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_92 LABELS gfortran llvm)
RUN(NAME string_93 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_94 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc  EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_95 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_96 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME string_97 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_98 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_99 LABELS gfortran llvm)
RUN(NAME string_100 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_101 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_102 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_103 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_104 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_105 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_106 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_107 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_108 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_109 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_110 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_111 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_112 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_113 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_114 LABELS gfortran llvm)
RUN(NAME string_115 LABELS gfortran llvm)
RUN(NAME string_116 LABELS gfortran llvm)
RUN(NAME string_117 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_118 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_119 LABELS gfortran llvm)
RUN(NAME string_120 LABELS gfortran llvm)
RUN(NAME string_121 LABELS gfortran llvm)
RUN(NAME string_122 LABELS gfortran llvm)
RUN(NAME string_123 LABELS gfortran llvm)
RUN(NAME string_124 LABELS gfortran llvm) # module character array initialized with a scalar constant (#4514)
RUN(NAME string_125 LABELS gfortran llvm) # no leak of a long fixed-length character function result (#6444)
RUN(NAME string_array_concat_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_array_concat_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME string_array_concat_03 LABELS gfortran llvm)
RUN(NAME string_array_concat_04 LABELS gfortran) # llvm: ICE in is_proper_array_of_strings_llvm_var

RUN(NAME substring_read LABELS gfortran llvm)

RUN(NAME nested_array_intrinsics_01 LABELS gfortran llvm)
RUN(NAME nested_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME nested_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
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_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME nested_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_25 LABELS gfortran llvm)
RUN(NAME nested_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME nested_27 LABELS gfortran llvm c)
RUN(NAME nested_28 LABELS llvm llvm_wasm llvm_wasm_emcc)
COMPILE(NAME character_len_of_function_12614 COMPILERS lfortran gfortran)

# The wasm backend does not support host association yet (frames of
# internal procedures, see nested_vars)
RUN(NAME nested_vars1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_vars2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME nested_vars3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME nested_vars_allocatable_call LABELS gfortran llvm c)
RUN(NAME nested_vars_20 LABELS gfortran llvm)
RUN(NAME nested_vars_21 LABELS gfortran llvm)
RUN(NAME nested_vars_22 LABELS gfortran llvm)
RUN(NAME nested_vars_24 LABELS gfortran llvm)
RUN(NAME nested_vars_25 LABELS gfortran llvm)
RUN(NAME nested_vars_26 LABELS gfortran llvm)
RUN(NAME nested_vars_30 LABELS gfortran llvm)

RUN(NAME nbody LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME intent_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intent_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME intent_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)


RUN(NAME callback_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME callback_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME callback_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME callback_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME callback_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME callback_06 LABELS gfortran llvm)
RUN(NAME callback_07 LABELS gfortran llvm EXTRAFILES callback_07c.c
    EXTRA_ARGS --implicit-interface --mangle-underscore --all-mangling) # C calls a non-bind(c) external with EXTERNAL dummies (#16400)
RUN(NAME callback_08 LABELS gfortran llvm EXTRAFILES callback_08c.c
    EXTRA_ARGS --implicit-interface) # module and capturing internal procedures passed to C through implicit interfaces (#16400)
RUN(NAME callback_09 LABELS gfortran llvm EXTRAFILES callback_09c.c) # c_funloc of a capturing internal procedure in a recursive host, called from C (#16400)

RUN(NAME recursion_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME recursion_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME recursion_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME recursion_04 LABELS gfortran llvm)
RUN(NAME recursion_05 LABELS gfortran llvm)
RUN(NAME recursion_06 LABELS gfortran llvm EXTRAFILES recursion_06_module.f90)
RUN(NAME recursion_07 LABELS gfortran llvm)
# GFortran 15 has an internal compiler error on recursion_08 (`reduce` with a
# procedure that enters the host of the internal procedure calling `reduce`)
RUN(NAME recursion_08 LABELS llvm)

RUN(NAME host_assoc_01 LABELS gfortran llvm)
RUN(NAME host_assoc_02 LABELS gfortran llvm)
RUN(NAME host_assoc_03 LABELS gfortran llvm c)
RUN(NAME host_assoc_04 LABELS gfortran llvm)
RUN(NAME host_assoc_05 LABELS gfortran llvm)
# Internal procedures of an internal procedure are an LFortran extension
RUN(NAME host_assoc_06 LABELS llvm c)
RUN(NAME host_assoc_07 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME host_assoc_08 LABELS gfortran llvm)
RUN(NAME host_assoc_09 LABELS gfortran llvm)
RUN(NAME host_assoc_10 LABELS gfortran llvm)
RUN(NAME host_assoc_11 LABELS gfortran llvm)
RUN(NAME host_assoc_12 LABELS gfortran llvm)
RUN(NAME host_assoc_13 LABELS gfortran llvm)
RUN(NAME host_assoc_14 LABELS gfortran llvm)
RUN(NAME host_assoc_15 LABELS gfortran llvm)
RUN(NAME host_assoc_16 LABELS gfortran llvm)
RUN(NAME host_assoc_17 LABELS gfortran llvm)
RUN(NAME host_assoc_18 LABELS gfortran llvm llvm_single_invocation
    EXTRAFILES host_assoc_18_module.f90 EXTRA_ARGS --separate-compilation --implicit-interface)
RUN(NAME host_assoc_19 LABELS gfortran llvm)
RUN(NAME host_assoc_20 LABELS gfortran llvm)
RUN(NAME host_assoc_21 LABELS gfortran llvm)
RUN(NAME host_assoc_22 LABELS gfortran llvm EXTRA_ARGS --internal-procedure-thunks=512)
# With --fast, `host` passes `get` with its frame instead of a thunk (#16665),
# so the thunks only run out without it.
RUN(NAME host_assoc_23 FAIL LABELS llvm NO_FAST EXTRA_ARGS --internal-procedure-thunks=2)
RUN(NAME host_assoc_26 LABELS gfortran llvm)
RUN(NAME host_assoc_27 LABELS gfortran llvm)
RUN(NAME procedure_argument_specialization_01 LABELS gfortran llvm)
# Passes only with the copies that --fast makes: without them the recursive
# host needs more than 2 thunks.
RUN(NAME procedure_argument_specialization_02 LABELS gfortran llvm
    EXTRA_ARGS --fast --internal-procedure-thunks=2)
RUN(NAME procedure_argument_specialization_03 LABELS gfortran llvm)
RUN(NAME procedure_argument_specialization_04 LABELS gfortran llvm)
RUN(NAME procedure_argument_specialization_05 LABELS gfortran llvm)
RUN(NAME procedure_argument_specialization_06 LABELS gfortran llvm)
# The copies that --fast makes must refer to the callee's entities in BLOCK
# and ASSOCIATE bodies.
RUN(NAME procedure_argument_specialization_07 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME procedure_argument_specialization_08 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME procedure_argument_specialization_09 LABELS gfortran llvm EXTRA_ARGS --fast)
# With --fast, a dummy procedure that is only called or passed on is passed
# with the frame of its host instead of a thunk: these recursive hosts need
# more than the default --internal-procedure-thunks without it (#16665).
RUN(NAME frame_specialization_01 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME frame_specialization_02 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME frame_specialization_03 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME frame_specialization_04 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME frame_specialization_05 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME frame_specialization_06 LABELS gfortran llvm EXTRA_ARGS --fast)
# With --fast, adjacent loop nests over the same iteration space are fused
# when that is legal (loop_fusion pass), and kept apart otherwise.
RUN(NAME loop_fusion_01 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME loop_fusion_02 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME loop_fusion_03 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME loop_fusion_04 LABELS gfortran llvm EXTRA_ARGS --fast)
# With --fast, single precision 1/sqrt from the hardware estimate and Newton
# steps written in LLVM IR (llvm_rsqrt.cpp).
RUN(NAME reciprocal_sqrt_01 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME reciprocal_sqrt_02 LABELS gfortran llvm EXTRA_ARGS --fast)

RUN(NAME return_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME return_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # contains module
RUN(NAME return_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME return_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME return_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME return_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)

RUN(NAME exponent_inf_01 LABELS gfortran llvm NO_FAST_MATH) # exponent(Inf/NaN); --fast sets no-infs/no-nans

RUN(NAME file_01 LABELS gfortran llvm COPY_TO_BIN file_01_data.txt)
RUN(NAME file_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_01_data.txt)
RUN(NAME file_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran COPY_TO_BIN file_03_data.txt)
RUN(NAME file_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_04_data.dat)
RUN(NAME file_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_05_data.dat)
RUN(NAME file_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_06_data.dat)
RUN(NAME file_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_07_data.dat)
RUN(NAME file_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran COPY_TO_BIN file_08.txt)
RUN(NAME file_09 LABELS gfortran llvm COPY_TO_BIN file_01_data.txt)
RUN(NAME file_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_10_data.txt)
RUN(NAME file_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_01_data.txt)
RUN(NAME file_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_12_data.txt)
RUN(NAME file_13 LABELS gfortran llvm llvm_wasm COPY_TO_BIN file_01_data.txt)
RUN(NAME file_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_08.txt)
RUN(NAME file_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran COPY_TO_BIN file_03_data.txt)
RUN(NAME file_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_18_data.txt)
RUN(NAME file_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_19_data.txt)
# the below test case writes and reads that same file for testing purpose
RUN(NAME file_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_21_data.txt)
RUN(NAME file_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_22_data.txt)
RUN(NAME file_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_23_data.txt)
RUN(NAME file_24 LABELS gfortran llvm COPY_TO_BIN "file 24 data.txt" file_22_data.txt)
RUN(NAME file_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --cpp)
RUN(NAME file_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_STD_F23)
RUN(NAME file_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_53 LABELS gfortran llvm)
RUN(NAME file_54 LABELS gfortran llvm)
RUN(NAME file_55 LABELS gfortran llvm)
RUN(NAME file_56 LABELS gfortran llvm)
RUN(NAME file_57 LABELS gfortran llvm)
RUN(NAME file_58 LABELS gfortran llvm)
RUN(NAME file_59 LABELS gfortran llvm)
RUN(NAME file_60 LABELS gfortran llvm)
RUN(NAME file_61 LABELS gfortran llvm)
RUN(NAME file_62 LABELS gfortran llvm)
RUN(NAME file_63 LABELS gfortran llvm)
RUN(NAME file_64 LABELS gfortran llvm)
RUN(NAME file_65 LABELS gfortran llvm)
RUN(NAME file_66 LABELS gfortran llvm)
RUN(NAME file_67 LABELS gfortran llvm)
RUN(NAME file_68 LABELS gfortran llvm)
RUN(NAME file_69 LABELS gfortran llvm)
RUN(NAME file_70 LABELS gfortran llvm)
RUN(NAME file_71 LABELS gfortran llvm)
RUN(NAME file_72 LABELS gfortran llvm)
RUN(NAME file_73 LABELS gfortran llvm)
RUN(NAME file_74 LABELS gfortran llvm)
RUN(NAME file_75 LABELS gfortran llvm)
RUN(NAME file_76 LABELS gfortran llvm)
RUN(NAME file_76_fail LABELS gfortran llvm FAIL)
RUN(NAME file_77 LABELS gfortran llvm) # write to a never-opened unit goes to fort.<unit> (#3924)

RUN(NAME file_close_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_close_02 LABELS gfortran llvm)

RUN(NAME file_open_01 LABELS llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME file_open_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_open_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME file_open_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME file_open_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME file_open_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME file_open_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME file_open_08 LABELS gfortran llvm)
RUN(NAME file_open_09 LABELS gfortran llvm)
RUN(NAME file_open_10 LABELS gfortran llvm)
RUN(NAME file_open_11 LABELS gfortran llvm)
RUN(NAME file_open_12 LABELS gfortran llvm)
RUN(NAME file_open_13 LABELS gfortran llvm)
RUN(NAME file_open_14 LABELS gfortran llvm)
RUN(NAME file_open_15 LABELS gfortran llvm)

RUN(NAME file_overwrite LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME inquire_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_08 LABELS gfortran llvm)
RUN(NAME inquire_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME inquire_10 LABELS gfortran llvm)
RUN(NAME inquire_11 LABELS gfortran llvm)
RUN(NAME inquire_12 LABELS gfortran llvm)
RUN(NAME inquire_13 LABELS gfortran llvm)
RUN(NAME inquire_14 LABELS llvm EXTRA_ARGS --cpp)
RUN(NAME inquire_15 LABELS gfortran llvm)
RUN(NAME inquire_16 LABELS gfortran llvm)
RUN(NAME inquire_17 LABELS gfortran llvm)
RUN(NAME inquire_18 LABELS gfortran llvm)
RUN(NAME inquire_19 LABELS gfortran llvm EXTRAFILES inquire_19.c)
RUN(NAME inquire_20 LABELS gfortran llvm)
RUN(NAME inquire_21 LABELS gfortran llvm)
RUN(NAME inquire_22 LABELS gfortran llvm)
RUN(NAME inquire_unit_exist LABELS gfortran llvm)
RUN(NAME inquire_iolength_string LABELS gfortran llvm)
RUN(NAME asynchronous_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME asynchronous_02 LABELS gfortran llvm)
RUN(NAME asynchronous_03 LABELS gfortran llvm
        EXTRAFILES asynchronous_03_module.f90)
RUN(NAME noalias_dummy_01 LABELS gfortran llvm)
RUN(NAME noalias_dummy_02 LABELS gfortran llvm)
RUN(NAME noalias_dummy_03 LABELS gfortran llvm)
RUN(NAME noalias_dummy_04 LABELS gfortran llvm)
RUN(NAME noalias_dummy_05 LABELS gfortran llvm
        EXTRAFILES noalias_dummy_05_pending.f90)
RUN(NAME noalias_dummy_06 LABELS gfortran llvm
        EXTRAFILES noalias_dummy_06_pending.f90)
RUN(NAME noalias_dummy_08 LABELS gfortran llvm)
RUN(NAME noalias_dummy_07 LABELS gfortran llvm
        EXTRA_ARGS --legacy-array-sections)
RUN(NAME tbaa_01 LABELS gfortran llvm)
RUN(NAME tbaa_02 LABELS gfortran llvm)
RUN(NAME tbaa_03 LABELS gfortran llvm)
RUN(NAME tbaa_04 LABELS gfortran llvm)
RUN(NAME tbaa_05 LABELS gfortran llvm)
RUN(NAME tbaa_06 LABELS gfortran llvm)
RUN(NAME tbaa_07 LABELS gfortran llvm)
RUN(NAME tbaa_08 LABELS gfortran llvm)
RUN(NAME tbaa_09 LABELS gfortran llvm)
RUN(NAME tbaa_10 LABELS gfortran llvm)
RUN(NAME tbaa_11 LABELS gfortran llvm)
RUN(NAME tbaa_12 LABELS gfortran llvm)
RUN(NAME tbaa_13 LABELS gfortran llvm)
RUN(NAME test_inquire_size LABELS gfortran llvm )
RUN(NAME inquire_size_64 LABELS gfortran llvm EXTRAFILES inquire_size_64.c)
RUN(NAME inquire_size_regions LABELS gfortran llvm llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME test_backspace_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_01_data.txt)
RUN(NAME backspace_iomsg_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME backspace_unformatted_01 LABELS gfortran llvm)
RUN(NAME test_endfile_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_endfile_02 LABELS gfortran llvm)
RUN(NAME test_endfile_03 LABELS gfortran llvm)
RUN(NAME endfile_iomsg_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME class_01 LABELS gfortran llvm)
RUN(NAME class_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_03 LABELS gfortran llvm)
RUN(NAME class_04 LABELS gfortran llvm fortran)
RUN(NAME class_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME class_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
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-arrays)
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_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_65 LABELS gfortran llvm)
RUN(NAME class_66 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_67 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_68 LABELS gfortran)
RUN(NAME class_69 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_70 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_71 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_72 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_73 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_74 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_75 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_76 LABELS gfortran llvm)
RUN(NAME class_77 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_78 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_79 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_80 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_81 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_82 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_83 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_84 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_85 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_86 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_87 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_88 LABELS llvm)
RUN(NAME class_89 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_90 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_STD_F23)
RUN(NAME class_91 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_92 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_93 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_94 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_95 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_96 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_97 LABELS gfortran llvm)
RUN(NAME class_98 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_99 LABELS gfortran llvm)
RUN(NAME class_100 LABELS gfortran llvm)
RUN(NAME class_101 LABELS gfortran llvm)
RUN(NAME class_102 LABELS gfortran llvm)
RUN(NAME class_103 LABELS gfortran llvm)
RUN(NAME class_104 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_105 LABELS gfortran llvm)
RUN(NAME class_106 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES class_106a.f90 class_106b.f90)
RUN(NAME class_107 LABELS gfortran llvm)
RUN(NAME class_108 LABELS gfortran llvm)
RUN(NAME class_109 LABELS gfortran llvm)
RUN(NAME class_110 LABELS gfortran llvm EXTRAFILES class_110_module.f90)
RUN(NAME class_111 LABELS gfortran llvm)
RUN(NAME class_112 LABELS gfortran llvm)
RUN(NAME class_113 LABELS gfortran llvm)
RUN(NAME class_114 LABELS gfortran llvm)
RUN(NAME class_115 LABELS gfortran llvm)
RUN(NAME class_116 LABELS gfortran llvm)
RUN(NAME class_117 LABELS gfortran llvm)
RUN(NAME class_118 LABELS gfortran llvm)
RUN(NAME class_119 LABELS gfortran llvm)
RUN(NAME class_120 LABELS gfortran llvm)
RUN(NAME class_121 LABELS gfortran llvm)
RUN(NAME class_122 LABELS gfortran llvm)
RUN(NAME class_123 LABELS gfortran llvm)
RUN(NAME class_124 LABELS gfortran llvm)
RUN(NAME class_127 LABELS gfortran llvm)
RUN(NAME class_128 LABELS gfortran llvm)
RUN(NAME class_129 LABELS gfortran llvm)
RUN(NAME class_130 LABELS gfortran llvm)
RUN(NAME class_131 LABELS gfortran llvm)
RUN(NAME class_132 LABELS gfortran llvm)
RUN(NAME class_133 LABELS gfortran llvm)
RUN(NAME class_134 LABELS gfortran llvm)
RUN(NAME class_135 LABELS gfortran llvm)

RUN(NAME class_137 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_138 LABELS gfortran llvm)
RUN(NAME class_139 LABELS gfortran llvm)
RUN(NAME class_140 LABELS gfortran llvm)
RUN(NAME class_141 LABELS gfortran llvm)
RUN(NAME class_142 LABELS gfortran llvm)
RUN(NAME class_143 LABELS gfortran llvm)
RUN(NAME class_144 LABELS gfortran llvm)
RUN(NAME class_145 LABELS gfortran llvm)
RUN(NAME class_146 LABELS gfortran llvm)
RUN(NAME class_147 LABELS gfortran llvm)
RUN(NAME class_148 LABELS gfortran llvm)
RUN(NAME class_149 LABELS gfortran llvm)
RUN(NAME class_150 LABELS gfortran llvm)
RUN(NAME class_151 LABELS gfortran llvm)
RUN(NAME class_152 LABELS gfortran llvm)
RUN(NAME class_153 LABELS gfortran llvm)
RUN(NAME class_154 LABELS gfortran llvm)
RUN(NAME class_155 LABELS gfortran llvm)
RUN(NAME class_158 LABELS gfortran llvm)
RUN(NAME class_159 LABELS gfortran llvm)
RUN(NAME class_157 LABELS gfortran llvm)
RUN(NAME class_160 LABELS gfortran llvm EXTRA_ARGS --separate-compilation)
RUN(NAME class_161 LABELS gfortran llvm)
RUN(NAME class_162 LABELS gfortran llvm)
RUN(NAME class_164 LABELS gfortran llvm)
RUN(NAME class_165 LABELS gfortran llvm)
RUN(NAME class_166 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_167 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_168 LABELS gfortran llvm)
RUN(NAME class_170 LABELS gfortran llvm)
RUN(NAME class_171 LABELS gfortran llvm)
RUN(NAME class_172 LABELS gfortran llvm)
RUN(NAME class_173 LABELS gfortran llvm)
RUN(NAME class_174 LABELS gfortran llvm)
RUN(NAME class_175 LABELS gfortran llvm EXTRAFILES class_175_ext.f90)

RUN(NAME class_procedure_args_01 LABELS gfortran llvm)
RUN(NAME class_procedure_nopass_01 LABELS gfortran llvm)
RUN(NAME class_procedure_nopass_02 LABELS gfortran llvm)
RUN(NAME class_procedure_nopass_03 LABELS gfortran llvm)
RUN(NAME generic_nopass_01 LABELS gfortran llvm)
RUN(NAME generic_nopass_02 LABELS gfortran llvm)

RUN(NAME derived_type_member_procedure_call_01 LABELS gfortran llvm)
RUN(NAME derived_type_member_procedure_call_02 LABELS gfortran llvm)
RUN(NAME derived_type_shape_pointer_01 LABELS gfortran llvm)
RUN(NAME derived_type_shape_pointer_02 LABELS gfortran llvm)
RUN(NAME derived_type_shape_pointer_03 LABELS gfortran llvm)
RUN(NAME derived_type_target_arg_01 LABELS gfortran llvm)
RUN(NAME derived_type_target_arg_02 LABELS gfortran llvm)

RUN(NAME class_allocate_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_allocate_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME class_allocate_03 LABELS gfortran llvm)
RUN(NAME class_allocate_04 LABELS gfortran llvm)
RUN(NAME class_allocate_05 LABELS gfortran llvm)
RUN(NAME class_allocate_06 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_allocate_07 LABELS gfortran llvm)
RUN(NAME class_allocate_08 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME class_allocate_09 LABELS gfortran llvm)
RUN(NAME class_allocate_10 LABELS gfortran llvm)
RUN(NAME class_allocate_11 LABELS gfortran llvm)
RUN(NAME class_optional_01 LABELS gfortran llvm)
RUN(NAME class_optional_02 LABELS gfortran llvm)
# gfortran 13 segfaults on a polymorphic allocatable array function result
# passed to an optional class array dummy, so this test is llvm only
RUN(NAME class_optional_03 LABELS llvm)
RUN(NAME class_optional_04 LABELS gfortran llvm)
RUN(NAME class_optional_05 LABELS gfortran llvm EXTRA_ARGS --verify-all-passes)
RUN(NAME class_pointer_assoc_leak_01 LABELS gfortran llvm)
RUN(NAME class_pointer_associated_01 LABELS gfortran llvm)
RUN(NAME class_array_deepcopy_01 LABELS gfortran llvm)
RUN(NAME intent_out_finalize_01 LABELS gfortran llvm)
RUN(NAME intent_out_finalize_02 LABELS gfortran llvm)
RUN(NAME intent_out_finalize_03 LABELS llvm) # does not work with GFortran version at CI
RUN(NAME intent_out_finalize_04 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME empty_array_01 LABELS gfortran llvm)
RUN(NAME empty_array_02 LABELS gfortran llvm)

RUN(NAME empty_array_03 LABELS gfortran llvm)
RUN(NAME empty_array_04 LABELS gfortran llvm)
RUN(NAME empty_array_05 LABELS gfortran llvm)

RUN(NAME kwargs_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME kwargs_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME test_iso_c_binding LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME test_iso_c_binding_constants LABELS gfortran llvm wasm)
RUN(NAME test_iso_c_binding_constants_wasm32 LABELS llvm_wasm llvm_wasm_emcc)
RUN(NAME test_iso_fortran_env LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME test_ieee_arithmetic LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_arithmetic_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_arithmetic_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_arithmetic_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME test_ieee_arithmetic_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_arithmetic_fast_01 LABELS gfortran llvm)
RUN(NAME iso_fortran_env_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME iso_fortran_env_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME iso_fortran_env_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME iso_fortran_env_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_next LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_next_up LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_next_down LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_logb LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_rem LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_is_negative LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_scalb LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_rint LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_int LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_real LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_copy_sign LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_is_normal LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME test_ieee_is_normal_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME test_ieee_nan_value LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_value_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME test_ieee_is_finite LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME test_ieee_unordered LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME test_ieee_support LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME test_ieee_support_array LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_support_array_02 LABELS gfortran llvm)
RUN(NAME test_ieee_infnan LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME test_format_inf_nan LABELS gfortran llvm)
RUN(NAME test_ieee_underflow_mode LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME test_ieee_inf_nan_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)

RUN(NAME abs_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran mlir)
RUN(NAME abs_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME abs_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm c fortran)
RUN(NAME abs_04 LABELS gfortran llvm)
RUN(NAME abs_05 LABELS gfortran llvm)
RUN(NAME abs_06 LABELS gfortran llvm NO_FAST_MATH)
RUN(NAME sqrt_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME sqrt_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME sin_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sin_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sin_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME sin_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME cos_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bits_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bits_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bits_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME bits_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #bgt, #bge, #blt, #ble
RUN(NAME bits_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran) #ibits
RUN(NAME bits_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME bits_07 LABELS gfortran llvm)
RUN(NAME cpu_time_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME cpu_time_02 LABELS gfortran llvm)
# RUN(NAME cpu_time_02_wasm LABELS wasm)
RUN(NAME system_clock_01 LABELS gfortran llvm)
RUN(NAME system_clock_02 LABELS gfortran llvm c)
RUN(NAME system_clock_03 LABELS gfortran llvm)
RUN(NAME system_clock_04 LABELS gfortran llvm)
RUN(NAME system_clock_05 LABELS gfortran llvm NO_STD_F23 GFORTRAN_ARGS -std=f2018) # mixed integer kinds are prohibited in Fortran 2023
RUN(NAME system_clock_06 LABELS gfortran llvm NO_STD_F23 GFORTRAN_ARGS -std=f2018) # integer kinds 1 and 2 are prohibited in Fortran 2023
RUN(NAME boz_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME boz_02 LABELS llvm llvm_wasm llvm_wasm_emcc) #remove gfortran label, as functionality is not supported by gfortran
RUN(NAME boz_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME cmd_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME cmd_02 LABELS gfortran llvm)
RUN(NAME cmd_03 LABELS gfortran llvm) # get_command_argument loop until empty
RUN(NAME getcwd_01 LABELS gfortran llvm) # GNU GETCWD subroutine
RUN(NAME getcwd_02 LABELS gfortran llvm) # GNU GETCWD function
RUN(NAME cmd_04 LABELS gfortran llvm) # iargc/getarg legacy F77 aliases

RUN(NAME flip_sign LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME div_to_mul LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME fma LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME fma_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME fma_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME fma_04 LABELS gfortran llvm)
RUN(NAME loop_unroll_small LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME loop_unroll_large LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME loop_unroll_integer8 LABELS gfortran llvm)
RUN(NAME loop_var_use_after_loop LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME sign_from_value LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)

RUN(NAME rewind_inquire_flush LABELS gfortran)
RUN(NAME rewind_01 LABELS gfortran llvm EXTRA_ARGS --cpp GFORTRAN_ARGS -cpp)
RUN(NAME rewind_02 LABELS gfortran llvm)
RUN(NAME rewind_03 LABELS gfortran llvm)
RUN(NAME interactive_rewind_01 LABELS llvm)
RUN(NAME flush_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_01_data.txt)
RUN(NAME flush_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN file_01_data.txt file_02_data.txt)
RUN(NAME flush_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME flush_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME flush_05 LABELS gfortran llvm)

RUN(NAME assign_to1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assign_to2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assign_to3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)

RUN(NAME conv_complex2real LABELS gfortran llvm llvm_wasm llvm_wasm_emcc wasm)

RUN(NAME template_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_03 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_04 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_05 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_06 LABELS llvm llvm_wasm llvm_wasm_emcc wasm fortran)
RUN(NAME template_07 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_08 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_program_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_module_01 LABELS llvm)
RUN(NAME template_deferred_type_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_interface_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_interface_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_proc_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_proc_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_subroutine_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_subroutine_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_type_attr_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_character_len_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_substring_01 LABELS llvm)
RUN(NAME template_substring_01_oracle LABELS gfortran llvm)
RUN(NAME template_deferred_const_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_04 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_05 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_06 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_07 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_08 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_09 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_10 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_11 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_12 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_13 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_14 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_15 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_16 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_17 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_18 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_19 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_20 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_deferred_const_21 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_add_01 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_add_01b LABELS llvm llvm_wasm llvm_wasm_emcc)             # FIXME: add visit_OverloadedBinOp to wasm
RUN(NAME template_add_01c LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_add_02 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_add_03 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_add_04 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_nested LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_travel_01 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_travel_01b LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_travel_02 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_triple LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_array_01 LABELS llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME template_array_02 LABELS llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME template_array_03 LABELS llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME template_array_04 LABELS llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME template_array_04b LABELS llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME template_array_06 LABELS llvm)
RUN(NAME template_array_07 LABELS llvm)
RUN(NAME template_array_08 LABELS llvm)
RUN(NAME template_unused_01 LABELS llvm)
# DISABLED: #8115 - ASR verify: FunctionType contains types tied to scope after template instantiation
# RUN(NAME template_matrix_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
# DISABLED: #8115 - ASR verify: FunctionType contains types tied to scope after template instantiation
# RUN(NAME template_matrix_test LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
#     template_semigroup.f90
#     template_monoid.f90
#     template_semiring.f90
#     template_unitring.f90
#     template_field.f90
#     template_matrix.f90
#     )
RUN(NAME template_struct_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_04 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_05 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_06 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_default_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_default_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_vector LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_simple_01 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_simple_02 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_simple_03 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_simple_04 LABELS llvm llvm_wasm llvm_wasm_emcc)                      # FIXME: add visit_OverloadedBinOp to wasm
RUN(NAME template_sort_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_sort_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_lapack_01 LABELS llvm llvm_wasm llvm_wasm_emcc wasm)
RUN(NAME template_interface_01 LABELS llvm llvm_wasm llvm_wasm_emcc)                   # FIXME: add visit_OverloadedBinOp to wasm
RUN(NAME template_commutative LABELS llvm llvm_wasm llvm_wasm_emcc)                    # FIXME: add visit_OverloadedBinOp to wasm
RUN(NAME template_intrinsic_func_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_intrinsic_func_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_intrinsic_op_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_intrinsic_op_02 LABELS llvm)
RUN(NAME template_intrinsic_op_03 LABELS llvm)
RUN(NAME template_defined_op_01 LABELS llvm)
RUN(NAME template_operator_scope_01 LABELS llvm)
RUN(NAME template_operator_scope_02 LABELS llvm)
RUN(NAME template_operator_scope_03 LABELS llvm)
RUN(NAME template_operator_scope_04 LABELS llvm)
RUN(NAME template_operator_scope_05 LABELS llvm)
RUN(NAME template_operator_scope_06 LABELS llvm)
RUN(NAME template_instantiate_subp_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_rename_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_rename_02 LABELS llvm)
RUN(NAME template_instantiate_rename_02_oracle LABELS gfortran llvm)
RUN(NAME template_instantiate_rename_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_rename_04 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_instantiate_rename_04_mod.f90)
RUN(NAME template_instantiate_rename_05 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_instantiate_rename_05_mod.f90)
RUN(NAME template_instantiate_rename_06 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_instantiate_rename_06_tmpl.f90 template_instantiate_rename_06_mod.f90)
RUN(NAME template_instantiate_rename_07 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_require_order_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_end_name_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_kwargs_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_case_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_order_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_order_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_own_name_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_instantiate_only_op_01 LABELS llvm)
RUN(NAME template_instantiate_op_01 LABELS llvm)
RUN(NAME template_instantiate_scope_01 LABELS llvm)
RUN(NAME template_instantiate_scope_02 LABELS llvm cpp)
RUN(NAME template_instantiate_scope_03 LABELS llvm)
RUN(NAME template_instantiate_scope_04 LABELS llvm)
RUN(NAME template_instantiate_scope_05 LABELS llvm)
RUN(NAME template_instantiate_scope_06 LABELS llvm)
RUN(NAME template_instantiate_scope_07 LABELS gfortran llvm)
RUN(NAME template_instantiate_scope_08 LABELS llvm)
RUN(NAME template_instantiate_scope_09 LABELS gfortran llvm)
RUN(NAME template_instantiate_scope_10 LABELS llvm)
RUN(NAME template_instantiate_no_only_01 LABELS llvm)
RUN(NAME template_instantiate_no_only_02 LABELS llvm)
RUN(NAME template_instantiate_no_only_03 LABELS llvm)
RUN(NAME template_prefix_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME scoped_attribute_01 LABELS gfortran llvm
        EXTRAFILES scoped_attribute_01_m.f90)
RUN(NAME template_host_var_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_04 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_05 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_06 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_host_var_07 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_host_var_07_mod.f90)
RUN(NAME template_host_var_08 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_broadcast_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_derived_result_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_deferred_dim_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_deferred_dim_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_member_name_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_struct_component_import_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_merge_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_access_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_inline_case_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_internal_host_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_associate_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_procedure_dummy_01 LABELS llvm)
RUN(NAME template_procedure_dummy_02 LABELS llvm)
RUN(NAME template_procedure_dummy_03 LABELS llvm)
RUN(NAME template_procedure_dummy_04 LABELS llvm)
RUN(NAME template_generic_deferred_proc_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_generic_deferred_proc_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_generic_deferred_proc_03 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_generic_deferred_proc_04 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_operator_deferred_proc_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_contains_order_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_contains_order_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_nested_contained_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_nested_deferred_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_nested_deferred_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_requirement_abstract_interface_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_local_param_dim_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_local_type_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_local_type_02 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_local_type_02_mod.f90)
# Templates are not supported by GFortran
RUN(NAME template_local_type_03 LABELS llvm)
RUN(NAME template_struct_dependency_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_require_intrinsic_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_reshape_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_defined_assignment_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_operator_mod_01 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_operator_mod_01_mod.f90)
RUN(NAME template_operator_mod_02 LABELS llvm llvm_wasm llvm_wasm_emcc EXTRAFILES template_operator_mod_02_mod.f90)
RUN(NAME template_proc_component_01 LABELS llvm)
RUN(NAME template_proc_component_02 LABELS llvm)
RUN(NAME template_submodule_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_unary_minus_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_unary_minus_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_unary_plus_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_procedure_dummy_05 LABELS llvm)
RUN(NAME template_struct_extends_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_class_procedure_nopass_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_class_procedure_deferred_01 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME template_do_concurrent_01 LABELS llvm)

RUN(NAME statement1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME dlaswap LABELS gfortran llvm)

RUN(NAME implied_do_loops1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops2 LABELS gfortran fortran)
RUN(NAME implied_do_loops3 LABELS gfortran fortran)
RUN(NAME implied_do_loops4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops5 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops6 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops7 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops8 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops9 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran NO_FAST)
RUN(NAME implied_do_loops15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran
    EXTRA_ARGS --implicit-typing)
RUN(NAME implied_do_loops16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops23 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops24 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops25 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops_strings LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops_print LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME implied_do_loops27 LABELS gfortran llvm)
RUN(NAME implied_do_loops28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops31 LABELS gfortran llvm)
RUN(NAME implied_do_loops32 LABELS gfortran llvm)
RUN(NAME implied_do_loops33 LABELS gfortran llvm)
RUN(NAME implied_do_loops34 LABELS gfortran llvm)
RUN(NAME implied_do_loops35 LABELS gfortran llvm)
RUN(NAME implied_do_loops36 LABELS gfortran llvm)

RUN(NAME implied_do_loops37 LABELS gfortran llvm)
RUN(NAME implied_do_loops38 LABELS gfortran llvm)
RUN(NAME implied_do_loops39 LABELS gfortran llvm)
RUN(NAME implied_do_loops40 LABELS gfortran llvm)
RUN(NAME implied_do_loops41 LABELS gfortran llvm)
RUN(NAME implied_do_loops42 LABELS gfortran llvm)
RUN(NAME implied_do_loops43 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME implied_do_loops44 LABELS gfortran llvm)
RUN(NAME implied_do_loops45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME implied_do_loops47 LABELS gfortran llvm)
RUN(NAME implied_do_loops48 LABELS gfortran llvm)
RUN(NAME implied_do_loops49 LABELS gfortran llvm)
RUN(NAME implied_do_loops50 LABELS gfortran llvm)
RUN(NAME implied_do_loops51 LABELS llvm)
RUN(NAME implied_do_loops52 LABELS gfortran llvm)
RUN(NAME implied_do_loops53 LABELS gfortran llvm)
RUN(NAME implied_do_loops54 LABELS gfortran llvm)
RUN(NAME implied_do_loops55 LABELS gfortran llvm)
RUN(NAME implied_do_loops56 LABELS gfortran llvm)
RUN(NAME implied_do_loops57 LABELS gfortran llvm)
RUN(NAME implied_do_loops58 LABELS gfortran llvm)
RUN(NAME implied_do_loops59 LABELS gfortran llvm)
RUN(NAME implied_do_loops60 LABELS gfortran llvm)
RUN(NAME implied_do_loops61 LABELS gfortran llvm)
RUN(NAME implied_do_loops62 LABELS gfortran llvm)
RUN(NAME implied_do_loops63 LABELS gfortran llvm)
RUN(NAME internal_write_trim_idl_01 LABELS gfortran llvm)

RUN(NAME minpack_01 LABELS gfortran llvm_rtlib EXTRAFILES
        minpack_01_module.f90 minpack_01_func.f90)
RUN(NAME minpack_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME external_01 LABELS gfortran llvmImplicit)
RUN(NAME external_02 LABELS gfortran llvmImplicit)
RUN(NAME external_03 LABELS gfortran llvmImplicit)
RUN(NAME external_04 LABELS gfortran llvmImplicit)
RUN(NAME external_05 LABELS gfortran llvmImplicit)
RUN(NAME external_06 LABELS gfortran llvmImplicit)
RUN(NAME external_07 LABELS gfortran llvmImplicit)
RUN(NAME external_08 LABELS gfortran llvmImplicit)
RUN(NAME external_09 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_10 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_11 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_12 LABELS gfortran llvm EXTRAFILES external_12_module.f90)
RUN(NAME external_13 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --mangle-underscore-external)
RUN(NAME mangle_underscore_external_02 LABELS gfortran llvm EXTRAFILES mangle_underscore_external_02b.f90
    EXTRA_ARGS --mangle-underscore-external) # global procedures defined in another object file link (#14164)
RUN(NAME mangle_underscore_external_03 LABELS gfortran llvm EXTRAFILES mangle_underscore_external_03b.f90
    EXTRA_ARGS --mangle-underscore-external) # `f` and `f_` stay distinct global procedures
RUN(NAME external_14 LABELS gfortran llvm EXTRAFILES external_14_module.f90)
RUN(NAME external_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-interface)
RUN(NAME external_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-interface)
RUN(NAME external_17 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_18 LABELS gfortran llvm EXTRAFILES external_18_module.f90 EXTRA_ARGS --implicit-interface)
RUN(NAME external_19 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_20 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_21 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_22 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_23 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_24 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_25 LABELS gfortran llvm NO_STD_F23 EXTRA_ARGS --std=f23)
RUN(NAME external_26 LABELS gfortran llvm fortran EXTRAFILES external_26_procs.f90)
RUN(NAME external_27 LABELS gfortran llvm)
RUN(NAME external_28 LABELS gfortran llvm EXTRAFILES external_28_procs.f90)
RUN(NAME external_29 LABELS gfortran llvm wasm)
RUN(NAME external_30 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --implicit-typing)
RUN(NAME external_31 LABELS gfortran llvm)
RUN(NAME external_32 LABELS gfortran llvm)
RUN(NAME external_33 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME external_34 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME external_35 LABELS gfortran llvm EXTRAFILES external_35_procs.f90)
RUN(NAME external_36 LABELS gfortran llvm EXTRAFILES external_36_procs.f90)
RUN(NAME external_37 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_38 LABELS llvm EXTRA_ARGS --implicit-interface)
RUN(NAME external_39 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME external_40 LABELS gfortran llvm EXTRA_ARGS --implicit-interface) # specific intrinsics of two kinds passed to typed external dummies (#13166)
RUN(NAME external_string_arg_01 LABELS gfortran llvm
    EXTRAFILES external_string_arg_01_stubs.c)
RUN(NAME external_string_arg_02 LABELS gfortran llvm
    EXTRAFILES external_string_arg_02_c.c
    EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME external_string_arg_03 LABELS gfortran llvm
    EXTRAFILES external_string_arg_03_c.c
    EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME string_arg_hidden_length_01 LABELS gfortran llvm)
RUN(NAME string_arg_hidden_length_02 LABELS gfortran llvm
    EXTRAFILES string_arg_hidden_length_02b.f90
    EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME string_arg_hidden_length_03 LABELS gfortran llvm)
RUN(NAME string_arg_hidden_length_05 LABELS gfortran llvm)


RUN(NAME interface_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME private1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME modules_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME spec_expr_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME spec_expr_02 LABELS gfortran llvm)
RUN(NAME spec_expr_03 LABELS gfortran llvm)
RUN(NAME spec_expr_04 LABELS gfortran llvm)
RUN(NAME spec_expr_05 LABELS gfortran llvm)
RUN(NAME spec_expr_06 LABELS gfortran llvm)
RUN(NAME spec_expr_07 LABELS gfortran llvm)
RUN(NAME spec_expr_10 LABELS gfortran llvm)
RUN(NAME spec_expr_11 LABELS gfortran llvm)
RUN(NAME spec_expr_12 LABELS gfortran llvm) # function result extent from a pure function of a local named constant (#7179)

RUN(NAME enum_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME enum_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES
         enum_02_module.f90)
RUN(NAME enum_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME enum_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME enum_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME enum_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES enum_06_module.f90)
RUN(NAME enum_07 LABELS gfortran llvm_submodule EXTRAFILES
         enum_07_module.f90 enum_07_submodule.f90)
RUN(NAME enum_08 LABELS gfortran llvm)
RUN(NAME enum_09 LABELS gfortran llvm)

RUN(NAME array_section_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_section_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_section_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_section_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_section_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_section_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_section_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_section_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME array_section_09 LABELS gfortran llvm
    EXTRA_ARGS -fdefault-integer-8
    GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME array_section_10 LABELS gfortran llvm)
RUN(NAME array_section_11 LABELS gfortran llvm
    EXTRA_ARGS --descriptor-index-64)
RUN(NAME array_section_12 LABELS gfortran llvm)
RUN(NAME array_section_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_lazy_allocator_01 LABELS gfortran llvm)
RUN(NAME array_allocatable_layout_01 LABELS gfortran llvm)
RUN(NAME array_automatic_stack_cleanup_01 LABELS gfortran llvm EXTRA_ARGS --stack-arrays=true)
RUN(NAME array_section_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_18 LABELS gfortran llvm EXTRAFILES array_section_18b.f90 EXTRA_ARGS --implicit-interface --legacy-array-sections)
RUN(NAME array_section_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_21 LABELS gfortran llvm)
RUN(NAME array_section_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_23 LABELS gfortran llvm)
RUN(NAME array_section_24 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME array_section_25 LABELS gfortran llvm EXTRA_ARGS --implicit-interface --legacy-array-sections)
RUN(NAME array_section_26 LABELS gfortran llvm)
RUN(NAME array_section_27 LABELS gfortran llvm llvm_single_invocation
    EXTRAFILES array_section_27_mod.f90 array_section_27_sub.f90
    EXTRA_ARGS --separate-compilation)
RUN(NAME array_section_28 LABELS gfortran llvm)
RUN(NAME array_section_29 LABELS gfortran llvm)
RUN(NAME array_section_30 LABELS gfortran llvm)
RUN(NAME array_section_31 LABELS gfortran llvm)
RUN(NAME array_section_32 LABELS gfortran llvm)
RUN(NAME array_section_33 LABELS gfortran llvm)
RUN(NAME array_section_34 LABELS gfortran llvm)
RUN(NAME array_section_35 LABELS gfortran llvm)
RUN(NAME array_section_36 LABELS gfortran llvm)
RUN(NAME array_section_37 LABELS gfortran llvm)
RUN(NAME array_section_38 LABELS gfortran llvm)
RUN(NAME array_section_39 LABELS gfortran llvm)
RUN(NAME array_section_40 LABELS gfortran llvm)
RUN(NAME array_section_41 LABELS gfortran llvm c)
RUN(NAME array_section_42 LABELS gfortran llvm)
RUN(NAME array_section_43 LABELS gfortran llvm EXTRA_ARGS --descriptor-index-64) # omitted section bounds beyond huge(0) (#15067)
RUN(NAME array_section_44 LABELS gfortran llvm) # section bounds that differ in an uncompared operand (#16723)

RUN(NAME nested_vars_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME nested_vars_02 LABELS gfortran llvm)
RUN(NAME nested_vars_03 LABELS gfortran llvm)
RUN(NAME nested_vars_04 LABELS gfortran llvm)
RUN(NAME nested_vars_05 LABELS gfortran llvm)
RUN(NAME nested_vars_06 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME nested_vars_07 LABELS gfortran llvm)
RUN(NAME nested_vars_08 LABELS gfortran llvm)
RUN(NAME nested_vars_09 LABELS gfortran llvm)
RUN(NAME nested_vars_10 LABELS gfortran llvm)
RUN(NAME nested_vars_11 LABELS gfortran llvm)
RUN(NAME nested_vars_12 LABELS gfortran llvm EXTRAFILES nested_vars_12a.f90 nested_vars_12b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME nested_vars_13 LABELS gfortran llvm)
RUN(NAME nested_vars_14 LABELS gfortran llvm)
RUN(NAME nested_vars_15 LABELS gfortran llvm)
RUN(NAME nested_vars_16 LABELS gfortran llvm)
RUN(NAME nested_vars_18 LABELS gfortran llvm)
RUN(NAME nested_vars_19 LABELS gfortran llvm c)
RUN(NAME nested_vars_27 LABELS gfortran llvm c cpp)
RUN(NAME nested_vars_28 LABELS gfortran llvm)
RUN(NAME nested_vars_31 LABELS gfortran llvm)
RUN(NAME nested_vars_32 LABELS gfortran llvm)
RUN(NAME nested_vars_33 LABELS gfortran llvm) # local array of an internal procedure sized by a host program variable (#2430)

# No `wasm` label: the wasm backend does not support host association yet
RUN(NAME pass_array_by_data_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray c)
RUN(NAME pass_array_by_data_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME pass_array_by_data_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME pass_array_by_data_13 LABELS gfortran llvm)
RUN(NAME pass_array_by_data_14 LABELS gfortran llvm)
RUN(NAME pass_array_by_data_15 LABELS gfortran llvm)
RUN(NAME pass_array_by_data_16 LABELS gfortran llvm
    EXTRAFILES pass_array_by_data_16_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME pass_array_by_data_17 LABELS gfortran llvm
    EXTRAFILES pass_array_by_data_17_module.f90
    EXTRA_ARGS --separate-compilation GFORTRAN_ARGS -fcheck=bounds)
RUN(NAME pass_array_by_data_18 LABELS gfortran llvm EXTRA_ARGS --separate-compilation)
RUN(NAME pass_array_by_data_19 LABELS gfortran llvm)
RUN(NAME pass_array_by_data_20 LABELS gfortran llvm)
RUN(NAME pass_array_by_data_21 LABELS gfortran llvm EXTRAFILES pass_array_by_data_21_lib.f90)
RUN(NAME pass_array_by_data_value_extents LABELS gfortran llvm)
RUN(NAME pass_array_by_data_extname_01 LABELS gfortran llvm)

RUN(NAME implicit_deallocate_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME deallocate_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME deallocate_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME deallocate_03 LABELS gfortran llvm fortran)
RUN(NAME deallocate_04 LABELS gfortran llvm) # deallocate of a pointer whose target has an allocatable component does not leak (#11076)
RUN(NAME dead_array_store_01 LABELS gfortran llvm)
RUN(NAME dead_array_store_02 LABELS gfortran llvm)
RUN(NAME dead_array_store_03 LABELS gfortran llvm
        EXTRAFILES dead_array_store_03_pending.f90)
RUN(NAME dead_array_store_04 LABELS gfortran llvm)

RUN(NAME finalization_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME finalization_02 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME finalization_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME finalization_04 LABELS gfortran llvm)
RUN(NAME finalization_05 LABELS gfortran llvm)
RUN(NAME finalization_06 LABELS gfortran llvm)
RUN(NAME finalization_07 LABELS gfortran llvm)
RUN(NAME finalization_08 LABELS gfortran llvm)
RUN(NAME finalization_09 LABELS gfortran llvm)
RUN(NAME finalization_10 LABELS gfortran llvm EXTRAFILES finalization_10_module.f90)
RUN(NAME finalization_11 LABELS gfortran llvm EXTRAFILES finalization_11_module.f90)
RUN(NAME finalization_12 LABELS gfortran llvm)
RUN(NAME finalization_13 LABELS gfortran llvm)
RUN(NAME finalization_14 LABELS gfortran llvm)
RUN(NAME finalization_15 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME finalization_20 LABELS gfortran llvm)
RUN(NAME finalization_21 LABELS gfortran llvm)
RUN(NAME finalization_22 LABELS gfortran llvm)
RUN(NAME finalization_25 LABELS gfortran llvm)
RUN(NAME finalization_26 LABELS gfortran llvm)
RUN(NAME finalization_30 LABELS gfortran llvm)
RUN(NAME finalization_31 LABELS gfortran llvm)
RUN(NAME finalization_32 LABELS gfortran llvm)
RUN(NAME finalization_33 LABELS gfortran llvm)
RUN(NAME finalization_34 LABELS gfortran llvm)
RUN(NAME finalization_35 LABELS gfortran llvm)
RUN(NAME finalization_36 LABELS gfortran llvm)
RUN(NAME finalization_37 LABELS gfortran llvm)
RUN(NAME finalization_38 LABELS gfortran llvm)
RUN(NAME finalization_39 LABELS gfortran llvm)
RUN(NAME finalization_41 LABELS gfortran llvm)
RUN(NAME finalization_42 LABELS gfortran llvm)
RUN(NAME finalization_43 LABELS gfortran llvm)
RUN(NAME finalization_44 LABELS gfortran llvm)
RUN(NAME finalization_45 LABELS gfortran llvm)
RUN(NAME finalization_46 LABELS gfortran llvm)
RUN(NAME finalization_47 LABELS gfortran llvm)
RUN(NAME finalization_48 LABELS gfortran llvm)
RUN(NAME finalization_49 LABELS gfortran llvm)
RUN(NAME finalization_50 LABELS gfortran llvm)
RUN(NAME finalization_51 LABELS gfortran llvm)
RUN(NAME finalization_52 LABELS gfortran llvm)
RUN(NAME finalization_53 LABELS gfortran llvm)
RUN(NAME finalization_54 LABELS gfortran llvm)
RUN(NAME finalization_55 LABELS llvm)
RUN(NAME finalization_56 LABELS gfortran llvm)
RUN(NAME finalization_57 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME finalization_58 LABELS gfortran llvm)
RUN(NAME finalization_59 LABELS gfortran llvm) # array constructor of structure constructors with a finalizable allocatable component as an actual argument (#3140)
RUN(NAME finalization_16 LABELS gfortran llvm)
RUN(NAME finalization_17 LABELS gfortran llvm)
RUN(NAME finalization_18 LABELS gfortran llvm)
RUN(NAME finalization_19 LABELS gfortran llvm)

RUN(NAME read_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN read_02_data.txt)
RUN(NAME read_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN read_03_data.txt)
RUN(NAME read_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME read_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN read_07_data.txt)
RUN(NAME read_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_20 LABELS gfortran llvm)
RUN(NAME read_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME read_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME read_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME read_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_28 LABELS gfortran llvm)
RUN(NAME read_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc COPY_TO_BIN read_31_data.txt)
RUN(NAME read_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_36 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_39 LABELS gfortran llvm)
RUN(NAME read_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_43 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_50 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_51 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME read_52 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST_MATH)
RUN(NAME read_53 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_54 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_55 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_56 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_57 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_58 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_59 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_60 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_61 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_62 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME read_63 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME read_64 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME read_65 LABELS gfortran llvm)
RUN(NAME read_66 LABELS gfortran llvm)
RUN(NAME read_67 LABELS gfortran llvm)
RUN(NAME read_68 LABELS gfortran llvm)
RUN(NAME read_69 LABELS gfortran llvm)
RUN(NAME read_70 LABELS gfortran llvm)
RUN(NAME read_71 LABELS gfortran llvm)
RUN(NAME read_72 LABELS gfortran llvm)
RUN(NAME read_73 LABELS gfortran llvm)
RUN(NAME read_74 LABELS gfortran llvm)
RUN(NAME read_75 LABELS gfortran llvm)
RUN(NAME read_76 LABELS gfortran llvm)
RUN(NAME read_77 LABELS gfortran llvm)
RUN(NAME read_78 LABELS gfortran llvm)
RUN(NAME read_79 LABELS gfortran llvm)
RUN(NAME read_80 LABELS gfortran llvm)
RUN(NAME read_81 LABELS gfortran llvm)
RUN(NAME read_82 LABELS gfortran llvm)
RUN(NAME read_83 LABELS gfortran llvm)
RUN(NAME read_84 LABELS gfortran llvm)
RUN(NAME read_85 LABELS gfortran llvm)
RUN(NAME read_86 LABELS gfortran llvm)
RUN(NAME read_87 LABELS gfortran llvm)
RUN(NAME read_88 LABELS gfortran llvm)
RUN(NAME read_89 LABELS gfortran llvm)
RUN(NAME read_90 LABELS gfortran llvm fortran)
RUN(NAME read_91 LABELS gfortran llvm)
RUN(NAME read_92 LABELS gfortran llvm)


RUN(NAME read_93 LABELS gfortran llvm)
RUN(NAME read_94 LABELS gfortran llvm EXTRAFILES read_94.c)
RUN(NAME read_95 LABELS gfortran llvm)
RUN(NAME read_96 LABELS gfortran llvm)
RUN(NAME read_98 LABELS gfortran llvm)
RUN(NAME read_99 LABELS gfortran llvm COPY_TO_BIN read_99_data.txt)
RUN(NAME read_100 LABELS gfortran llvm)
RUN(NAME read_101 LABELS gfortran llvm)
RUN(NAME read_102 LABELS gfortran llvm)
RUN(NAME read_103 LABELS gfortran llvm)
RUN(NAME read_104 LABELS gfortran llvm)
RUN(NAME read_105 LABELS gfortran llvm)
RUN(NAME read_106 LABELS gfortran llvm)
RUN(NAME read_107 LABELS gfortran llvm)
RUN(NAME read_108 LABELS gfortran llvm)
RUN(NAME read_109 LABELS gfortran llvm)
RUN(NAME read_110 LABELS llvm)
RUN(NAME read_111 LABELS gfortran llvm)
RUN(NAME read_112 LABELS gfortran llvm)
RUN(NAME read_113 LABELS gfortran llvm)
RUN(NAME read_114 FAIL LABELS gfortran llvm)
RUN(NAME read_115 LABELS gfortran llvm)
RUN(NAME read_116 LABELS gfortran llvm)
RUN(NAME read_117 LABELS gfortran llvm)
RUN(NAME read_118 LABELS gfortran llvm)
RUN(NAME read_119 LABELS gfortran llvm)
RUN(NAME read_120 LABELS gfortran llvm)
RUN(NAME read_121 LABELS gfortran llvm) # internal formatted read of a character variable inside select case (#6230)
RUN(NAME iomsg_deferred_char_01 LABELS gfortran llvm)
RUN(NAME read_crlf_01 LABELS gfortran llvm)
RUN(NAME read_unconnected_unit_01 LABELS gfortran llvm)

RUN(NAME write_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME write_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME write_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME write_14 LABELS gfortran llvm)
RUN(NAME write_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_18 LABELS gfortran llvm)
RUN(NAME write_19 LABELS gfortran llvm EXTRAFILES write_19_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME write_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_22 LABELS gfortran llvm)
RUN(NAME write_23 LABELS gfortran llvm)
RUN(NAME write_24 LABELS gfortran llvm)
RUN(NAME write_25 LABELS gfortran llvm)
RUN(NAME write_26 LABELS gfortran llvm)
RUN(NAME write_27 LABELS gfortran llvm)
RUN(NAME write_28 LABELS gfortran llvm)
RUN(NAME write_34 LABELS gfortran llvm)
RUN(NAME write_37 LABELS gfortran llvm)
RUN(NAME write_38 LABELS gfortran llvm)
RUN(NAME write_39 LABELS gfortran llvm)
RUN(NAME write_40 LABELS gfortran llvm)
RUN(NAME write_41 LABELS gfortran llvm)
RUN(NAME write_42 LABELS gfortran llvm)
RUN(NAME write_43 LABELS gfortran llvm)
RUN(NAME write_44 LABELS gfortran llvm)
RUN(NAME write_45 LABELS gfortran llvm)
RUN(NAME write_46 LABELS gfortran llvm)
RUN(NAME write_47 LABELS gfortran llvm c)
RUN(NAME write_48 LABELS gfortran llvm c)
# llvm: an iostat= variable of a non-default kind fails module verification (#13947)
RUN(NAME write_49 LABELS gfortran c)
RUN(NAME write_51 LABELS gfortran llvm)
RUN(NAME write_52 LABELS gfortran llvm)
RUN(NAME write_53 LABELS gfortran llvm)
RUN(NAME write_54 LABELS gfortran llvm)
RUN(NAME write_55 LABELS gfortran llvm)

RUN(NAME write_fortran_01 LABELS gfortran llvm fortran)
RUN(NAME write_fortran_02 LABELS gfortran llvm fortran)

RUN(NAME dtio_write_01 LABELS gfortran llvm)
RUN(NAME dtio_write_01_sc LABELS gfortran llvm llvm_single_invocation EXTRAFILES dtio_write_01_sc_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME dtio_write_02 LABELS gfortran llvm)
RUN(NAME dtio_write_03 LABELS gfortran llvm)
RUN(NAME dtio_write_04 LABELS gfortran llvm)
RUN(NAME dtio_write_04_fixed LABELS gfortran llvm EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME dtio_write_05 LABELS gfortran llvm)
RUN(NAME dtio_write_05_sc LABELS gfortran llvm llvm_single_invocation EXTRAFILES dtio_write_05_sc_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME dtio_write_06 LABELS gfortran llvm EXTRA_ARGS --std=f23)
RUN(NAME dtio_write_07 LABELS gfortran llvm)
RUN(NAME dtio_write_08 LABELS gfortran llvm)
RUN(NAME dtio_write_09 FAIL LABELS gfortran llvm)
RUN(NAME dtio_write_10 LABELS gfortran llvm llvm_single_invocation
    EXTRAFILES dtio_write_10_ma.f90 dtio_write_10_mb.f90 dtio_write_10_user.f90
    EXTRA_ARGS --separate-compilation)
RUN(NAME dtio_write_11 LABELS gfortran llvm)
RUN(NAME dtio_write_12 LABELS gfortran llvm)
RUN(NAME dtio_write_13 LABELS gfortran llvm)
RUN(NAME dtio_write_14 LABELS gfortran llvm)
RUN(NAME dtio_write_15 LABELS gfortran llvm)
RUN(NAME dtio_write_16 LABELS gfortran llvm llvm_single_invocation
    EXTRAFILES dtio_write_16_mod.f90 dtio_write_16_a.f90 dtio_write_16_b.f90
    EXTRA_ARGS --separate-compilation)
RUN(NAME dtio_write_17 LABELS gfortran llvm)
RUN(NAME dtio_write_18 LABELS gfortran llvm) # list-directed write through a generic write(formatted) interface, stdlib string_type pattern (#7697)

RUN(NAME do_loop_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm mlir x86)

RUN(NAME iso_c_binding_01 LABELS gfortran llvm fortran)
RUN(NAME iso_c_binding_02 LABELS gfortran llvm)
RUN(NAME iso_c_binding_05 LABELS gfortran llvm)

RUN(NAME iso_c_binding_07 LABELS gfortran llvm)
RUN(NAME iso_c_binding_08 LABELS gfortran llvm)
RUN(NAME iso_c_binding_09 LABELS gfortran llvm)

RUN(NAME array_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)
RUN(NAME array_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME array_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray fortran)

RUN(NAME do_loop_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm mlir x86)
RUN(NAME do_loop_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc mlir)
RUN(NAME do_loop_04 LABELS gfortran llvm c cpp wasm mlir)
RUN(NAME do_loop_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp)
RUN(NAME do_loop_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME do_loop_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME do_loop_08 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME do_loop_09 LABELS gfortran llvm c cpp)
RUN(NAME do_loop_10 LABELS gfortran llvm c cpp mlir x86)
RUN(NAME do_loop_11 LABELS gfortran c cpp)
# Pin an x86-64 CPU whose tuning enables upper-bound loop unrolling, which
# exposes an LLVM 7 and 8 miscompile on any x86-64 host.
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
    RUN(NAME do_loop_12 LABELS gfortran llvm EXTRA_ARGS --fast --mcpu=x86-64)
endif()
RUN(NAME do_loop_13 LABELS gfortran llvm)
RUN(NAME do_loop_14 LABELS gfortran llvm)
RUN(NAME do_loop_15 FAIL LABELS gfortran llvm wasm mlir x86 GFORTRAN_ARGS -fcheck=do)
RUN(NAME do_loop_16 LABELS gfortran llvm)
RUN(NAME do_loop_17 LABELS gfortran llvm c mlir)
RUN(NAME do_loop_18 LABELS gfortran llvm c EXTRA_ARGS --fixed-form --implicit-typing GFORTRAN_ARGS -ffixed-form)
RUN(NAME do_loop_19 LABELS gfortran llvm c cpp wasm mlir x86)
RUN(NAME do_loop_20 LABELS gfortran llvm c cpp EXTRA_ARGS --fixed-form GFORTRAN_ARGS -ffixed-form)
RUN(NAME do_loop_21 LABELS gfortran llvm c cpp wasm mlir x86)
RUN(NAME do_loop_22 LABELS gfortran llvm c cpp wasm)
RUN(NAME do_variable_after_loop_01 LABELS gfortran llvm)
RUN(NAME do_loop_mlir_01 LABELS gfortran llvm mlir)
RUN(NAME do_loop_array_copy_01 LABELS gfortran llvm c cpp mlir EXTRA_ARGS --fast)
RUN(NAME intrinsic_reduction_dim_01 LABELS gfortran llvm)
RUN(NAME intrinsic_reduction_dim_02 LABELS gfortran llvm)


RUN(NAME array_op_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm) #TODO: fix mlir, commented in PR: #6060
RUN(NAME array_op_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME array_op_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray wasm)
RUN(NAME array_op_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_op_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME array_op_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_op_12 LABELS gfortran llvm)
RUN(NAME array_op_13 LABELS gfortran llvm)
RUN(NAME array_op_14 LABELS gfortran llvm)
RUN(NAME array_op_15 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME array_op_16 LABELS gfortran llvm metal cuda NO_FAST_MATH)
RUN(NAME array_slice_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray c)
RUN(NAME array_slice_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_slice_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray c)
RUN(NAME array_slice_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)

RUN(NAME declaration_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME declaration_02 LABELS gfortran llvm)
RUN(NAME declaration_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME declaration_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME declaration_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME procedure_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_05 LABELS gfortran llvmImplicit)
RUN(NAME procedure_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_09_b LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES procedure_09_a.f90)
RUN(NAME procedure_10 LABELS gfortran llvm)
RUN(NAME procedure_11 LABELS gfortran llvm)
RUN(NAME procedure_12 LABELS gfortran llvm)
RUN(NAME procedure_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc cpp)
RUN(NAME procedure_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
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 procedure_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_29 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME procedure_30 LABELS llvm)
RUN(NAME procedure_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_32 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_33 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_34 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME procedure_35 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_36 LABELS gfortran llvm)
RUN(NAME procedure_37 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_38 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_39 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_40 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_41 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_42 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME procedure_43 LABELS gfortran llvm EXTRAFILES procedure_43_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME procedure_44 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_45 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_46 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_47 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_48 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_pointer_abstract_01 LABELS gfortran llvm)
RUN(NAME procedure_49 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME procedure_50 LABELS gfortran llvm)
RUN(NAME procedure_51 LABELS gfortran llvm)
RUN(NAME procedure_52 LABELS gfortran llvm)
RUN(NAME procedure_53 LABELS gfortran llvm)
RUN(NAME procedure_54 LABELS gfortran llvm)
RUN(NAME procedure_55 LABELS gfortran llvm)
RUN(NAME procedure_56 LABELS gfortran llvm)
RUN(NAME procedure_57 LABELS gfortran llvm)
RUN(NAME procedure_58 LABELS gfortran llvm)
RUN(NAME procedure_59 LABELS gfortran llvm)
# CI's system GFortran 13 rejects a procedure as the value of a procedure
# pointer component in a structure constructor initializer (see
# procedure_pointer_29 above), which the standard allows, so llvm only
RUN(NAME procedure_60 LABELS llvm)
RUN(NAME procedure_61 LABELS gfortran llvm EXTRAFILES procedure_61_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME procedure_62 LABELS gfortran llvm c cpp)
RUN(NAME procedure_63 LABELS gfortran llvm c cpp)
RUN(NAME procedure_64 LABELS gfortran llvm)
RUN(NAME procedure_65 LABELS gfortran llvm)
RUN(NAME procedure_bounds_01 FAIL NO_FAST LABELS llvm) # run-time "Array shape mismatch" through a procedure pointer
RUN(NAME procedure_bounds_02 FAIL NO_FAST LABELS llvm) # run-time "Array shape mismatch" through a dummy procedure
RUN(NAME procedure_pointer_abstract_02 LABELS gfortran llvm)
RUN(NAME procedure_pointer_keyword_01 LABELS gfortran llvm)
RUN(NAME procedure_pointer_keyword_02 LABELS gfortran llvm)
RUN(NAME procedure_pointer_keyword_03 LABELS gfortran llvm)

RUN(NAME allocated_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocated_06 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME allocate_07 LABELS gfortran llvm
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocate_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME allocate_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME dealloc_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME dealloc_02 LABELS gfortran)
RUN(NAME dealloc_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME dealloc_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME dealloc_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME dealloc_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME double_complex_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME lapack_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME lapack_02 LABELS gfortran llvm EXTRA_ARGS --fixed-form --legacy-array-sections --implicit-interface GFORTRAN_ARGS -ffixed-form)
RUN(NAME lapack_03 LABELS gfortran llvm EXTRA_ARGS --fixed-form --legacy-array-sections --implicit-interface --cpp-infer GFORTRAN_ARGS -ffixed-form)
RUN(NAME lapack_04 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_05 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_06 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_07 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_08 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_09 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME lapack_10 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections --implicit-interface)

RUN(NAME common_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_04 LABELS gfortran llvm) # TODO: Fix these tests
RUN(NAME common_05 LABELS gfortran)
RUN(NAME common_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmImplicit)
RUN(NAME common_07 LABELS gfortran llvmImplicit)
RUN(NAME common_08 LABELS gfortran llvmImplicit)
RUN(NAME common_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmImplicit)
RUN(NAME common_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_24 LABELS gfortran llvm llvm2
    EXTRAFILES common_24a.f90 common_24b.f90
    EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME common_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_28 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME common_29 LABELS gfortran llvm)
RUN(NAME common_30 LABELS gfortran llvm)
RUN(NAME common_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_32 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_33 LABELS gfortran llvm)
RUN(NAME common_34 LABELS gfortran llvm)
RUN(NAME common_35 LABELS gfortran llvm)
RUN(NAME common_36 LABELS gfortran llvm)
RUN(NAME common_37 LABELS gfortran llvm)
RUN(NAME common_38 LABELS gfortran llvm)
RUN(NAME common_39 LABELS gfortran llvm)
RUN(NAME common_40 LABELS gfortran llvm)
RUN(NAME common_41 LABELS gfortran llvm)
RUN(NAME common_42 LABELS gfortran llvm)
RUN(NAME common_43 LABELS gfortran llvm)
RUN(NAME common_44 LABELS gfortran llvm EXTRAFILES common_44a.f90 common_44b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME common_52 LABELS gfortran llvm EXTRAFILES common_52_left.f90 common_52_right.f90 common_52_swap.f90 common_52_relay.f90)
RUN(NAME common_53 LABELS gfortran llvm EXTRAFILES common_53_m1.f90 common_53_m2.f90)
RUN(NAME common_54 LABELS gfortran llvm EXTRAFILES common_54_module.f90 common_54_legacy.f90 EXTRA_ARGS --implicit-interface)
RUN(NAME common_55 LABELS gfortran llvm fortran)
RUN(NAME common_56 LABELS gfortran llvm)
RUN(NAME common_57 LABELS gfortran llvm EXTRAFILES common_57_module.f90 common_57_data.f90)
RUN(NAME common_58 LABELS gfortran llvm EXTRAFILES common_58_module.f90)
RUN(NAME common_59 LABELS gfortran llvm c fortran)
RUN(NAME common_60 LABELS gfortran llvm)
RUN(NAME common_61 LABELS gfortran llvm) # subscript storage associated with the target (#16215)
RUN(NAME common_62 LABELS llvm flang) # not gfortran: GFortran 16.2 misses the overlap of two views of a common block (#16215)
RUN(NAME common_63 LABELS llvm flang) # not gfortran: GFortran 16.2 misses the overlap of two views of a common block (#16215)
RUN(NAME common_array_section_01 LABELS gfortran llvm)
RUN(NAME common_substring_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME common_substring_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME statement_01 LABELS llvm gfortran llvmImplicit)
RUN(NAME statement_02 LABELS gfortran llvmImplicit)
RUN(NAME statement_03 LABELS gfortran llvmImplicit)
RUN(NAME statement_04 LABELS llvm gfortran llvmImplicit)
RUN(NAME statement_05 LABELS llvm gfortran llvmImplicit)
RUN(NAME statement_06 LABELS llvm gfortran)
RUN(NAME statement_07 LABELS gfortran llvmImplicit)

RUN(NAME data_implied_do_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME data_implied_do_07 LABELS gfortran llvm)
RUN(NAME data_implied_do_08 LABELS gfortran llvm)
RUN(NAME data_implied_do_09 LABELS gfortran llvm)
RUN(NAME data_implied_do_10 LABELS gfortran llvm)
RUN(NAME data_implied_do_11 LABELS gfortran llvm)
RUN(NAME data_implied_do_12 LABELS gfortran llvm)
RUN(NAME data_implied_do_13 LABELS gfortran llvm) # named-constant repeat count of a negative value in a DATA implied-do (#4680)

RUN(NAME save_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME save_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME save_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME save_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME save_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_12 LABELS gfortran llvmImplicit)
RUN(NAME save_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME save_14 LABELS gfortran llvm)
RUN(NAME save_15 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME save_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME save_19 LABELS gfortran llvm)
RUN(NAME save_20 LABELS gfortran llvm)
RUN(NAME save_21 LABELS gfortran llvm)
RUN(NAME save_22 LABELS gfortran llvm)
RUN(NAME save_23 LABELS gfortran llvm)
RUN(NAME save_24 LABELS gfortran llvm)
RUN(NAME save_25 LABELS llvm) # gfortran 13 at CI rejects procedure targets in initializer structure constructors
RUN(NAME save_26 LABELS llvm) # gfortran 13 at CI rejects procedure targets in initializer structure constructors
RUN(NAME save_27 LABELS gfortran llvm EXTRAFILES save_27_sub.f90)
RUN(NAME save_28 LABELS llvm) # not gfortran: GFortran 15.2 at CI loses the length of a SAVE deferred-length character array between calls
RUN(NAME save_29 LABELS gfortran llvm)
RUN(NAME save_30 LABELS gfortran llvm)
RUN(NAME save_31 LABELS gfortran llvm)


RUN(NAME entry_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME entry_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME entry_06 LABELS gfortran llvm)
RUN(NAME entry_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME entry_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME entry_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME entry_14 LABELS gfortran llvm)
RUN(NAME entry_15 LABELS gfortran llvm)
RUN(NAME entry_16 LABELS gfortran llvm)
RUN(NAME entry_17 LABELS gfortran llvm)
RUN(NAME entry_18 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME entry_19 LABELS gfortran llvm)
RUN(NAME entry_20 LABELS gfortran llvm)
RUN(NAME entry_21 LABELS gfortran llvm)
RUN(NAME entry_22 LABELS gfortran llvm)
RUN(NAME entry_23 LABELS gfortran llvm)
RUN(NAME entry_24 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME entry_25 LABELS gfortran llvm)
RUN(NAME entry_26 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME entry_27 LABELS gfortran llvm)
RUN(NAME entry_28 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME entry_29 LABELS gfortran llvm)
RUN(NAME entry_30 LABELS gfortran llvm)
RUN(NAME entry_31 LABELS llvm flang) # not gfortran: GFortran 16.2 miscompiles the overlap of the result variables of a function and its entries (#16215)

RUN(NAME character_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_09 LABELS gfortran llvm fortran)
RUN(NAME character_10 LABELS gfortran EXTRAFILES character_10c.c)
RUN(NAME character_11 LABELS gfortran EXTRAFILES character_11c.c)
RUN(NAME character_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_17 LABELS gfortran llvmImplicit)
RUN(NAME character_18 LABELS gfortran llvmImplicit)
RUN(NAME character_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_21 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_24 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --implicit-interface)
RUN(NAME character_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_26 LABELS gfortran llvm)
RUN(NAME character_27 LABELS gfortran llvm)
RUN(NAME character_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_30 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME character_31 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_32 LABELS gfortran llvm)
RUN(NAME character_33 LABELS gfortran llvm)
RUN(NAME character_34 LABELS gfortran llvm)
RUN(NAME character_35 LABELS gfortran llvm)
RUN(NAME character_36 LABELS gfortran llvm)
RUN(NAME character_37 LABELS gfortran llvm)
RUN(NAME character_38 LABELS gfortran llvm) # character array passed to an explicit-shape dummy with runtime size (#4234)
RUN(NAME character_39 LABELS gfortran llvm) # shorter strings assigned to a character(8) array keep length 8 (#3862)
RUN(NAME character_module_array_15364 LABELS gfortran llvm EXTRAFILES character_module_array_15364_m.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME character_assignment_01 LABELS gfortran llvm)
RUN(NAME char_array_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME char_array_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME char_array_broadcast_01 LABELS gfortran llvm)
RUN(NAME char_array_indexing LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME char_array_indexing_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_parameter_padding_trimming LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_array_parameter_padding_trimming LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_array_block_padding LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_array_realloc_01 LABELS gfortran llvm)
RUN(NAME character_max_parameter_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME character_explicit LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME c_ptr_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_07 LABELS gfortran llvm)
RUN(NAME c_ptr_08 LABELS gfortran llvm)
RUN(NAME c_ptr_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME c_ptr_14 LABELS gfortran llvm)
RUN(NAME c_ptr_15 LABELS gfortran llvm)
RUN(NAME c_ptr_16 LABELS gfortran llvm EXTRAFILES c_ptr_16_module.f90)
RUN(NAME c_ptr_17 LABELS gfortran llvm EXTRAFILES c_ptr_17_module.f90)
RUN(NAME c_ptr_18 LABELS gfortran llvm EXTRAFILES c_ptr_18_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME c_ptr_19 LABELS gfortran llvm EXTRAFILES c_ptr_19_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME c_ptr_20 LABELS gfortran llvm)
RUN(NAME c_ptr_21 LABELS gfortran llvm)
RUN(NAME c_ptr_22 LABELS gfortran llvm)
RUN(NAME c_ptr_23 LABELS gfortran llvm)
RUN(NAME c_ptr_24 LABELS gfortran llvm)
RUN(NAME c_ptr_25 LABELS gfortran llvm)
RUN(NAME c_ptr_26 LABELS gfortran llvm)
RUN(NAME target_01 LABELS gfortran llvm)
RUN(NAME c_f_pointer_01 LABELS gfortran llvm)
RUN(NAME c_f_pointer_02 LABELS gfortran llvm)

RUN(NAME c_f_proc_ptr_01 LABELS gfortran llvm EXTRAFILES c_f_proc_ptr_01.c) # c_f_procpointer
RUN(NAME c_f_proc_ptr_02 LABELS gfortran llvm)

RUN(NAME arrayitem_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME arrayitem_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_indices_array_item LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_indices_array_item_assignment LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_indices_array_item_assignment_1 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_indices_array_item_assignment_2 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_indices_array_item_assignment_3 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_indices_array_item_assignment_4 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)

RUN(NAME implicit_argument_casting_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --implicit-argument-casting --legacy-array-sections
    GFORTRAN_ARGS -fallow-argument-mismatch)

RUN(NAME implicit_argument_casting_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --implicit-argument-casting --legacy-array-sections
    GFORTRAN_ARGS -fallow-argument-mismatch)

RUN(NAME implicit_argument_casting_03 LABELS gfortran llvm
    EXTRA_ARGS --implicit-interface --implicit-argument-casting
    GFORTRAN_ARGS -fallow-argument-mismatch)
RUN(NAME implicit_argument_casting_04 LABELS gfortran llvm
    EXTRA_ARGS --implicit-argument-casting)
RUN(NAME implicit_argument_casting_05 LABELS gfortran llvm
    EXTRA_ARGS --implicit-interface --implicit-argument-casting
    GFORTRAN_ARGS -fallow-argument-mismatch)

RUN(NAME specfun_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --implicit-typing)

RUN(NAME cpp_pre_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_06 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c wasm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_10 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_11 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME cpp_pre_12 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_13 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_14 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    COPY_TO_BIN cpp_pre_14_include.h
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_15 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_16 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_17 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_18 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME cpp_pre_19 LABELS gfortran llvm
    EXTRA_ARGS --cpp --fixed-form
    GFORTRAN_ARGS -cpp -ffixed-form)

RUN(NAME cpp_pre_20 LABELS gfortran llvm
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)

RUN(NAME dabs_01 LABELS gfortran llvmImplicit)

RUN(NAME minpack_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME optional_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --cpp
    GFORTRAN_ARGS -cpp)
RUN(NAME optional_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME optional_09 LABELS gfortran llvm)
RUN(NAME optional_10 LABELS gfortran llvm)
RUN(NAME optional_11 LABELS gfortran llvm)
RUN(NAME optional_12 LABELS gfortran llvm)
RUN(NAME optional_13 LABELS gfortran llvm)
RUN(NAME optional_14 LABELS gfortran llvm)
RUN(NAME optional_15 LABELS gfortran llvm)
RUN(NAME optional_16 LABELS gfortran llvm)
RUN(NAME optional_17 LABELS gfortran llvm)
RUN(NAME optional_18 LABELS gfortran llvm)
RUN(NAME optional_19 LABELS gfortran llvm)
RUN(NAME optional_20 LABELS gfortran llvm)
RUN(NAME optional_string_arg_01 LABELS gfortran llvm)
RUN(NAME optional_string_arg_02 LABELS gfortran llvm)

RUN(NAME end_name_match LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME construct_name_01 LABELS gfortran llvm)

RUN(NAME mangle_underscore_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --mangle-underscore --all-mangling NO_FAST_MATH)
RUN(NAME mangle_underscore_02 LABELS gfortran llvm EXTRA_ARGS --mangle-underscore --all-mangling)
RUN(NAME mangle_underscore_03 LABELS gfortran llvm EXTRAFILES mangle_underscore_03b.f90
    EXTRA_ARGS --separate-compilation --implicit-interface --all-mangling --mangle-underscore) # external procedures called from module procedures (#16065)
RUN(NAME mangle_underscore_04 LABELS gfortran llvm EXTRAFILES mangle_underscore_04_m.f90
    EXTRA_ARGS --separate-compilation --implicit-interface --all-mangling --mangle-underscore) # module compiled separately agrees on the names of `t` and `x` (#16065)
RUN(NAME mangle_underscore_05 LABELS gfortran llvm EXTRA_ARGS --mangle-underscore --all-mangling) # components used in a procedure copied by pass_array_by_data (#16091)
RUN(NAME mangle_underscore_06 LABELS gfortran llvm EXTRA_ARGS --mangle-underscore --all-mangling) # components of a host type in a contained procedure of a pass_array_by_data copy (#16091)
RUN(NAME mangle_underscore_07 LABELS gfortran llvm EXTRA_ARGS --mangle-underscore --all-mangling) # structure constructor of a local type in a pass_array_by_data copy (#16091)

RUN(NAME nan_handling_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME precision_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME precision_02 LABELS gfortran) # TODO fix this test
RUN(NAME precision_03 LABELS gfortran llvm)

RUN(NAME array_unbounded_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)
RUN(NAME array_unbounded_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray)

RUN(NAME matmul_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvm_nopragma)
RUN(NAME matmul_02 LABELS gfortran)
RUN(NAME matmul_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME matmul_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME matmul_05 LABELS gfortran llvm)
RUN(NAME matmul_06 LABELS gfortran llvm)
RUN(NAME matmul_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME matmul_08 LABELS gfortran llvm)
RUN(NAME matmul_10 LABELS gfortran llvm)
RUN(NAME matmul_11 LABELS gfortran llvm)
RUN(NAME matmul_12 LABELS gfortran llvm)
RUN(NAME matmul_13 LABELS gfortran llvm)
RUN(NAME matmul_14 LABELS gfortran llvm)
RUN(NAME matmul_15 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME matmul_16 LABELS llvm) # gfortran -O1 and above gives other results; gfortran -O0 and flang agree with the checked values
RUN(NAME matmul_17 LABELS gfortran llvm) # matmul of explicit-shape dummy arrays in a contained subroutine (#3918)
RUN(NAME array_size_matmul_01 LABELS gfortran llvm)
RUN(NAME array_size_empty_triplet_01 LABELS gfortran llvm)
RUN(NAME array_size_section_01 LABELS gfortran llvm)
RUN(NAME array_size_assumed_size_01 LABELS gfortran llvm)
RUN(NAME array_size_rank_one_01 LABELS gfortran llvm)
RUN(NAME array_size_kind_01 LABELS gfortran llvm) # size() kind differs from the extent kind in a result extent (#15394)
RUN(NAME simd_01 LABELS gfortran c llvm llvm_nopragma c_nopragma)
RUN(NAME simd_02 LABELS gfortran c llvm llvm_nopragma c_nopragma NO_FAST_MATH)
RUN(NAME legacy_array_sections_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --legacy-array-sections --implicit-interface)
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 legacy_array_sections_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc llvmStackArray EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_10 LABELS gfortran llvm llvm2 EXTRAFILES legacy_array_sections_10_foo.f90 EXTRA_ARGS --legacy-array-sections --implicit-interface --separate-compilation)
RUN(NAME legacy_array_sections_11 LABELS gfortran llvm
    EXTRAFILES legacy_array_sections_11_stubs.c
    EXTRA_ARGS --fixed-form --implicit-interface --implicit-typing --legacy-array-sections --separate-compilation
    GFORTRAN_ARGS -ffixed-form -fno-underscoring)
RUN(NAME legacy_array_sections_12 LABELS gfortran llvm
    EXTRA_ARGS --implicit-interface --legacy-array-sections)
RUN(NAME legacy_array_sections_13 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_14 LABELS gfortran llvm
    EXTRAFILES legacy_array_sections_14_foo.f90
    EXTRA_ARGS --legacy-array-sections --implicit-interface --separate-compilation)
RUN(NAME legacy_array_sections_15 LABELS gfortran llvm
    EXTRA_ARGS --legacy-array-sections -fdefault-integer-8
    GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME legacy_array_sections_16 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_17 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_18 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_19 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_20 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_21 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_22 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_23 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_24 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_25 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_26 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections
    GFORTRAN_ARGS -fallow-argument-mismatch)
RUN(NAME legacy_array_sections_27 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_28 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_29 LABELS gfortran llvm
    EXTRAFILES legacy_array_sections_29_ext.f90
    EXTRA_ARGS --legacy-array-sections --implicit-interface)
RUN(NAME legacy_array_sections_30 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_31 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_32 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_33 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_34 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_35 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections)
RUN(NAME legacy_array_sections_36 LABELS gfortran llvm EXTRA_ARGS --legacy-array-sections) # array element passed to an assumed-size dummy that an internal procedure uses (#10347)

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)
RUN(NAME char_array_initialization_declaration_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME ip_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME shifta_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME shifta_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_shifta_01 LABELS gfortran llvm)
RUN(NAME elemental_result_len_01 LABELS gfortran llvm)

RUN(NAME equivalence_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_12 LABELS gfortran llvm)
RUN(NAME equivalence_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc NO_FAST)
RUN(NAME equivalence_16 LABELS gfortran llvm
    EXTRA_ARGS -fdefault-integer-8
    GFORTRAN_ARGS -fdefault-integer-8)
RUN(NAME equivalence_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_21 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
RUN(NAME equivalence_22 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_24 LABELS gfortran llvm)
RUN(NAME equivalence_25 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_26 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_27 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_28 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_29 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME equivalence_30 LABELS gfortran llvm)
RUN(NAME equivalence_31 LABELS gfortran llvm)
RUN(NAME equivalence_32 LABELS gfortran llvm)
RUN(NAME equivalence_33 LABELS gfortran llvm)
RUN(NAME equivalence_34 LABELS gfortran llvm)
RUN(NAME equivalence_35 LABELS gfortran llvm)
RUN(NAME equivalence_36 LABELS gfortran llvm)
RUN(NAME equivalence_37 LABELS gfortran llvm)
RUN(NAME equivalence_38 LABELS gfortran llvm)

RUN(NAME fortran_primes_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME goto_gototarget_return_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran c cpp)

RUN(NAME selected_int_kind_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME selected_int_kind_02 LABELS gfortran llvm)

RUN(NAME capital_01 LABELS gfortran llvmImplicit)

RUN(NAME do_concurrent_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc mlir)
RUN(NAME do_concurrent_02 LABELS llvm_omp llvm mlir)
RUN(NAME do_concurrent_03 LABELS llvm_omp)
RUN(NAME do_concurrent_04 LABELS llvm_omp)
RUN(NAME do_concurrent_05 LABELS llvm_omp)
RUN(NAME do_concurrent_06 LABELS llvm_omp)
RUN(NAME do_concurrent_07 LABELS llvm_omp)
RUN(NAME do_concurrent_08 LABELS llvm_omp)
RUN(NAME do_concurrent_09 LABELS llvm_omp)
RUN(NAME do_concurrent_10 LABELS llvm_omp)
RUN(NAME do_concurrent_11 LABELS llvm_omp llvm) # every other `do_concurrent` test can work with llvm, the only reason
RUN(NAME do_concurrent_12 LABELS llvm_omp llvm NO_FAST_MATH) # to not include is that we do a `omp_set_num_threads(xx)` call
RUN(NAME do_concurrent_13 LABELS llvm_omp llvm) # to not include is that we do a `omp_set_num_threads(xx)` call
RUN(NAME do_concurrent_14 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME do_concurrent_15 LABELS llvm llvm_wasm llvm_wasm_emcc mlir)
RUN(NAME do_concurrent_16 LABELS gfortran llvm llvm_omp)
RUN(NAME do_concurrent_17 LABELS llvm llvm_omp) # `reduce` locality is not accepted by every supported gfortran
RUN(NAME do_concurrent_18 LABELS gfortran llvm)
RUN(NAME do_concurrent_19 LABELS gfortran llvm fortran cuda c)
RUN(NAME do_concurrent_20 LABELS llvm cuda) # type-spec in concurrent-header is not yet implemented by gfortran.
RUN(NAME do_concurrent_21 LABELS gfortran llvm fortran EXTRA_ARGS --implicit-typing)
RUN(NAME do_concurrent_22 LABELS gfortran llvm fortran)
RUN(NAME do_concurrent_23 LABELS gfortran llvm fortran)
RUN(NAME do_concurrent_24 LABELS gfortran llvm fortran)
RUN(NAME do_concurrent_25 LABELS llvm llvm_omp) # `reduce` locality is not accepted by every supported gfortran
RUN(NAME do_concurrent_26 LABELS gfortran llvm c cpp wasm mlir)


RUN(NAME transfer_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME transfer_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME transfer_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME transfer_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_14 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_18 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME transfer_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME transfer_20 LABELS gfortran llvm)
RUN(NAME transfer_21 LABELS gfortran llvm)
RUN(NAME transfer_22 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME transfer_23 LABELS gfortran llvm)
RUN(NAME transfer_24 LABELS gfortran llvm)
RUN(NAME transfer_25 LABELS gfortran llvm)
RUN(NAME transfer_26 LABELS gfortran llvm)
RUN(NAME transfer_27 LABELS gfortran llvm)
RUN(NAME transfer_28 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME transfer_29 LABELS gfortran llvm)
RUN(NAME transfer_30 LABELS gfortran llvm)
RUN(NAME transfer_31 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME transfer_32 LABELS gfortran llvm)
RUN(NAME transfer_33 LABELS gfortran llvm)
RUN(NAME transfer_34 LABELS gfortran llvm)
RUN(NAME transfer_35 LABELS gfortran llvm) # transfer of an integer(4) array to integer(1) with a size argument (#7678)
RUN(NAME transfer_36 LABELS gfortran llvm) # transfer with a large size argument does not overflow the stack (#7596)
RUN(NAME transfer_37 LABELS gfortran llvm) # transfer of an integer(8) scalar to an integer(4) array section (#7217)
RUN(NAME transfer_38 LABELS gfortran llvm) # transfer of a character array constant to a longer character variable mold (#3494)
RUN(NAME transfer_assumed_shape_01 LABELS gfortran llvm)

RUN(NAME present_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME present_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME present_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME present_04 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME present_05 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME present_06 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME present_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME present_08 LABELS gfortran llvm)
RUN(NAME types_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME arrayprint_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME print_arr_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME print_arr_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME print_arr_10 LABELS gfortran llvm)
RUN(NAME print_arr_11 LABELS gfortran llvm)
RUN(NAME print_arr_12 LABELS gfortran llvm)
RUN(NAME print_arr_13 LABELS gfortran llvm)
RUN(NAME print_arr_14 LABELS gfortran llvm)
RUN(NAME print_arr_15 LABELS gfortran llvm)
RUN(NAME print_arr_16 LABELS gfortran llvm)
RUN(NAME print_arr_17 LABELS gfortran llvm EXTRA_ARGS --pass=print_arr)
RUN(NAME pointer_to_cptr LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME pointer_intent_in_01 LABELS gfortran llvm)
RUN(NAME pointer_intent_in_02 LABELS gfortran llvm)
RUN(NAME pointer_intent_in_03 LABELS gfortran llvm)
RUN(NAME pointer_intent_in_04 LABELS gfortran llvm)
RUN(NAME pointer_intent_in_05 LABELS gfortran llvm)
RUN(NAME pointer_intent_in_06 LABELS gfortran llvm)
RUN(NAME sequence_assoc_01 LABELS gfortran llvm)
RUN(NAME sequence_assoc_02 LABELS gfortran llvm)
RUN(NAME sequence_assoc_03 FAIL NO_FAST LABELS llvm) # run-time "Array size mismatch": empty actual, non-empty dummy
RUN(NAME sequence_assoc_04 FAIL NO_FAST LABELS llvm) # run-time "Array size mismatch": too-small fixed-size actual
RUN(NAME sequence_assoc_05 FAIL NO_FAST LABELS llvm) # run-time "Array size mismatch": too-small actual for a bind(c) assumed-size dummy
RUN(NAME sequence_assoc_06 FAIL NO_FAST LABELS llvm) # run-time "Array size mismatch": too-small descriptor actual for a bind(c) assumed-size dummy

RUN(NAME binop_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME binop_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME binop_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME logical_arrays_logical_binop_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME dfloat_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME elemental_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME elemental_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
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 elemental_16 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_17 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_18 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_19 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_20 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_21 LABELS gfortran llvm)
RUN(NAME elemental_22 LABELS gfortran llvm)
RUN(NAME elemental_23 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME elemental_24 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME elemental_25 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME elemental_26 LABELS gfortran llvm fortran)
RUN(NAME elemental_27 LABELS gfortran llvm)
RUN(NAME elemental_28 LABELS gfortran llvm)
RUN(NAME elemental_29 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)

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)
RUN(NAME types_23 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME types_24 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME types_25 LABELS gfortran llvm)
RUN(NAME types_real_to_complex_cast LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME types_real_array_to_complex_array_cast LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)

RUN(NAME lbound_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME lbound_02 LABELS gfortran llvm)
RUN(NAME lbound_03 LABELS gfortran llvm)
RUN(NAME lbound_04 LABELS gfortran llvm)
RUN(NAME lbound_05 LABELS gfortran llvm)
RUN(NAME vector_subscript_01 LABELS gfortran llvm) # lbound, ubound and size of x(idx) when idx does not start at 1 (#16926)
RUN(NAME module_function_with_nopass LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME module_function_without_nopass LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME polymorphic_arguments_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME polymorphic_arguments_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME allocatable_polymorphic_mold_01 LABELS gfortran llvm fortran)
RUN(NAME allocatable_polymorphic_mold_02 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_mold_03 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_mold_04 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_mold_05 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_mold_06 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_assign_01 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_assign_02 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_polymorphic_assign_03 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_assign_04 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_polymorphic_assign_05 LABELS llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_polymorphic_assign_06 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_polymorphic_source_01 LABELS gfortran llvm)
RUN(NAME allocatable_polymorphic_source_02 LABELS gfortran llvm)
RUN(NAME allocatable_dummy_descriptor_01 LABELS gfortran llvm)

RUN(NAME polymorphic_class_compare LABELS gfortran)

RUN(NAME nested_struct_proc_01 LABELS gfortran llvm)

RUN(NAME binop_of_struct_instance_in_function_call gfortran llvm fortran)

RUN(NAME test_call_arg_structinstance_member gfortran llvm fortran)

RUN(NAME openmp_bindc_01 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_bindc_02 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_bindc_03 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_bindc_04 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_host_assoc_01 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_host_assoc_02 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp) # #16382's part with orphaned barriers is left out until #16619 is fixed
RUN(NAME openmp_host_assoc_03 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp EXTRA_ARGS --internal-procedure-thunks=16)
RUN(NAME frame_specialization_07 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp EXTRA_ARGS --fast)

RUN(NAME openmp_01 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_02 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_03 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_04 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_05 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_06 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_07 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_08 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_09 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_10 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_11 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_12 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_13 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_14 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_15 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_16 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_17 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_18 LABELS gfortran llvm_omp EXTRA_ARGS --fast GFORTRAN_ARGS -fopenmp) # compute pi
RUN(NAME openmp_19 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_20 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_21 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_22 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_23 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_24 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_25 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_26 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_27 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_28 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_29 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_30 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp) # matmul
RUN(NAME openmp_31 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_32 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_33 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp) # mandelbrot
RUN(NAME openmp_34 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp) # Ensure uniform load distribution over threads
RUN(NAME openmp_35 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_36 LABELS gfortran llvm GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_37 LABELS gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_38 LABELS gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_39 LABELS gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_40 LABELS llvm_omp llvm)
RUN(NAME openmp_41 LABELS llvm_omp llvm)
RUN(NAME openmp_42 LABELS llvm_omp llvm)
RUN(NAME openmp_43 LABELS llvm_omp llvm)
RUN(NAME openmp_44 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_45 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_47 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_48 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_49 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_50 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_51 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_52 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_53 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_54 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_55 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_56 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_57 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_58 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_59 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_60 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_61 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_62 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_63 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_64 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_65 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
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_70 LABELS metal cuda EXTRA_ARGS --openmp)
RUN(NAME openmp_71 LABELS metal cuda EXTRA_ARGS --openmp)
RUN(NAME openmp_72 LABELS metal cuda EXTRA_ARGS --openmp)
RUN(NAME openmp_73 LABELS llvm_omp  gfortran GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_74 LABELS gfortran llvm)
RUN(NAME openmp_75 LABELS gfortran metal cuda EXTRA_ARGS --openmp)
RUN(NAME openmp_76 LABELS gfortran metal cuda EXTRA_ARGS --openmp --gpu-offload-omp-loops GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_77 LABELS llvm llvm_omp)
RUN(NAME openmp_78 LABELS gfortran llvm llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_79 LABELS gfortran metal cuda llvm_omp EXTRA_ARGS --openmp)
RUN(NAME openmp_80 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_82 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_83 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_84 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_85 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_86 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_87 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_88 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_90 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_91 LABELS gfortran llvm_omp EXTRAFILES openmp_91_mod.f90 GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_92 LABELS gfortran llvm_omp EXTRAFILES openmp_92b.f90 GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_93 LABELS gfortran llvm_omp EXTRAFILES openmp_93b.f90 GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_94 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_95 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_96 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_97 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_98 LABELS gfortran llvm_omp EXTRAFILES openmp_98b.f90 GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_99 LABELS gfortran llvm_omp EXTRAFILES openmp_99_mod.f90
    EXTRA_ARGS --separate-compilation GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_100 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_101 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_102 LABELS gfortran llvm_omp EXTRAFILES openmp_102b.f90 GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_103 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_104 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_105 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_106 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_107 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
# Not gfortran: older gfortran versions in CI do not accept the DO CONCURRENT
# LOCAL locality spec (F2018).
RUN(NAME openmp_108 LABELS llvm_omp)
RUN(NAME openmp_109 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_110 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_111 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_112 LABELS gfortran llvm_omp GFORTRAN_ARGS -fopenmp)
RUN(NAME openmp_threadprivate_tls LABELS gfortran llvm_omp
    EXTRAFILES openmp_threadprivate_tls_mod.f90
    EXTRA_ARGS --separate-compilation GFORTRAN_ARGS -fopenmp)

RUN(NAME nullify_01 LABELS gfortran fortran llvm)
RUN(NAME nullify_02 LABELS gfortran fortran llvm)
RUN(NAME nullify_03 LABELS gfortran llvm)
RUN(NAME nullify_04 LABELS gfortran llvm)
RUN(NAME nullify_05 LABELS gfortran llvm)
RUN(NAME nullify_06 LABELS gfortran llvm)
RUN(NAME nullify_07 LABELS gfortran llvm)
RUN(NAME nullify_08 LABELS gfortran llvm) # nullify a recursive pointer component through a pointer (#4673)

RUN(NAME fortran_01 LABELS gfortran llvm fortran)
RUN(NAME fortran_02 LABELS gfortran fortran)
RUN(NAME fortran_03 LABELS gfortran llvm fortran)

RUN(NAME contig LABELS gfortran llvm)
RUN(NAME contig_stmt_01 LABELS gfortran llvm)
RUN(NAME contiguous_dummy_01 LABELS gfortran llvm) # non-contiguous actual for a contiguous dummy (#17133)
RUN(NAME contiguous_dummy_02 LABELS gfortran llvm) # copy-back of an actual copied in the test of an IF or DO WHILE
RUN(NAME compiler_version_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME compiler_version_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME compiler_version_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)


RUN(NAME exit_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c cpp wasm mlir x86)
RUN(NAME exit_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)
RUN(NAME exit_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc c)

RUN(NAME struct_constant_extends_01 LABELS gfortran llvm)
RUN(NAME struct_type_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_02 LABELS gfortran llvm)
RUN(NAME struct_type_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_05 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_06 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_07 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_08 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_09 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_10 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_11 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_12 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_15 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME struct_type_13 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME structure_constructor_args_01 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_02 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_03 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_04 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_05 LABELS llvm) # `reduce` is not supported by every supported gfortran
RUN(NAME structure_constructor_args_06 LABELS llvm) # `reduce` is not supported by every supported gfortran
RUN(NAME structure_constructor_args_07 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_08 LABELS gfortran llvm EXTRAFILES structure_constructor_args_08_a.f90 structure_constructor_args_08_b.f90)
RUN(NAME structure_constructor_args_09 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_10 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_11 LABELS llvm flang) # `pdt(k)(...)` constructors are not accepted by every supported gfortran
RUN(NAME structure_constructor_args_12 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_13 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_15 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_14 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_20 LABELS llvm)
RUN(NAME structure_constructor_args_21 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_22 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_23 LABELS llvm) # gfortran 13 miscompiles unallocated scalar allocatable data sources
RUN(NAME structure_constructor_args_24 LABELS llvm) # gfortran 13 miscompiles unallocated scalar allocatable data sources
RUN(NAME structure_constructor_args_25 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_28 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_29 LABELS gfortran llvm)
RUN(NAME structure_constructor_args_30 LABELS llvm) # gfortran 13 at CI rejects procedure targets in initializer structure constructors
RUN(NAME structure_constructor_args_31 LABELS gfortran llvm NO_STD_F23)
RUN(NAME structure_constructor_args_32 LABELS gfortran llvm NO_STD_F23)
RUN(NAME structure_constructor_args_33 LABELS gfortran llvm) # allocatable component given a value in an array element constructor (#13383)

RUN(NAME func_call_in_decl_01 LABELS gfortran llvm)
RUN(NAME func_call_in_decl_02 LABELS gfortran llvm)
RUN(NAME func_call_in_decl_03 LABELS gfortran llvm EXTRAFILES func_call_in_decl_03b.f90) # declaration helpers in two object files link (#14534)
RUN(NAME func_call_in_decl_04 LABELS gfortran llvm) # result length calls a function use associated in the callee (#15004)
RUN(NAME func_parameter_type_02 LABELS gfortran) # function passed in other argument of function
RUN(NAME logical_not_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME assign_allocatable_array_of_struct_instances LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_component_struct_array_01 LABELS gfortran llvm)
RUN(NAME allocatable_component_struct_array_02 LABELS gfortran llvm)
RUN(NAME allocatable_component_scalar_use_01 LABELS gfortran llvm)
RUN(NAME allocatable_component_scalar_use_02 LABELS gfortran llvm)
RUN(NAME allocatable_component_arg_01 LABELS gfortran llvm)
RUN(NAME allocatable_component_arg_02 LABELS gfortran llvm)
RUN(NAME allocatable_component_arg_03 LABELS gfortran llvm)
RUN(NAME allocatable_component_arg_04 LABELS gfortran llvm)
RUN(NAME allocatable_component_arg_05 LABELS gfortran llvm)
RUN(NAME derived_component_section_01 LABELS gfortran llvm)
RUN(NAME derived_component_section_02 LABELS gfortran llvm)
RUN(NAME generic_interface_function_call_of_function_call LABELS gfortran llvm
    llvm_wasm llvm_wasm_emcc EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME elemental_function_scalar_array_arg LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME elemental_function_overloaded_compare LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --realloc-lhs-arrays)

RUN(NAME procedure_decl_01_a LABELS gfortran llvm llvm_wasm llvm_wasm_emcc EXTRAFILES  procedure_decl_01_b.f90)
RUN(NAME array_concat LABELS gfortran llvm llvm_wasm llvm_wasm_emcc) # array passed in ArrayInitializer

RUN(NAME multiple_objects_args LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME module_array_init LABELS gfortran llvm llvm_wasm llvm_wasm_emcc fortran)
RUN(NAME attr_intrinsic LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME separate_compilation_01 LABELS gfortran llvm EXTRAFILES separate_compilation_01b.f90)
RUN(NAME separate_compilation_02 LABELS gfortran llvm EXTRAFILES separate_compilation_02b.f90)
RUN(NAME separate_compilation_03 LABELS gfortran llvm EXTRAFILES separate_compilation_03a.f90 separate_compilation_03b.f90 EXTRA_ARGS --skip-pass=pass_array_by_data)
RUN(NAME separate_compilation_04 LABELS gfortran llvm EXTRAFILES separate_compilation_04a.f90 separate_compilation_04b.f90)
RUN(NAME separate_compilation_05 LABELS gfortran llvm EXTRAFILES separate_compilation_05a.f90 separate_compilation_05b.f90)
RUN(NAME separate_compilation_06 LABELS gfortran llvm EXTRAFILES separate_compilation_06a.f90 separate_compilation_06b.f90)
RUN(NAME separate_compilation_07 LABELS gfortran llvm EXTRAFILES separate_compilation_07a.f90 separate_compilation_07b.f90 separate_compilation_07c.c)
RUN(NAME separate_compilation_08 LABELS gfortran llvm EXTRAFILES separate_compilation_08a.f90 separate_compilation_08b.f90)
RUN(NAME separate_compilation_09 LABELS gfortran llvm EXTRAFILES separate_compilation_09a.f90 separate_compilation_09b.f90 separate_compilation_09c.c)
RUN(NAME separate_compilation_10 LABELS gfortran llvm EXTRAFILES separate_compilation_10a.f90)
RUN(NAME separate_compilation_11 LABELS gfortran llvm EXTRAFILES separate_compilation_11a.f90)
RUN(NAME separate_compilation_12 LABELS gfortran llvm EXTRAFILES separate_compilation_12a.f90)
RUN(NAME separate_compilation_13 LABELS gfortran llvm EXTRAFILES separate_compilation_13a.f90)
RUN(NAME separate_compilation_class_star_01 LABELS gfortran llvm
    EXTRAFILES separate_compilation_class_star_01a.f90)
RUN(NAME separate_compilation_class_star_02 LABELS gfortran llvm
    EXTRAFILES separate_compilation_class_star_02a.f90)
RUN(NAME separate_compilation_class_star_03 LABELS gfortran llvm
    EXTRAFILES separate_compilation_class_star_03a.f90)
RUN(NAME separate_compilation_class_star_04 LABELS gfortran llvm
    EXTRAFILES separate_compilation_class_star_04a.f90
    EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME separate_compilation_external_symbol_01 LABELS gfortran llvm
    EXTRAFILES separate_compilation_external_symbol_01a.f90)
RUN(NAME separate_compilation_external_symbol_02 LABELS gfortran llvm
    EXTRAFILES separate_compilation_external_symbol_02a.f90
    EXTRA_ARGS --implicit-interface)
RUN(NAME separate_compilation_procedure_pointer_01 LABELS gfortran llvm
    EXTRAFILES separate_compilation_procedure_pointer_01a.f90
    EXTRA_ARGS --implicit-interface) # calls through procedure pointer components with implicit interfaces in a module (#16414)
RUN(NAME class_star_array_arg_01 LABELS gfortran llvm)
RUN(NAME class_star_pointer_01 LABELS gfortran llvm)
RUN(NAME class_star_pointer_02 LABELS gfortran llvm)

RUN(NAME separate_compilation_14 LABELS gfortran llvm EXTRAFILES separate_compilation_14a.f90)
RUN(NAME separate_compilation_15 LABELS gfortran llvm EXTRAFILES separate_compilation_15a.f90)
RUN(NAME separate_compilation_16 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_16a.f90 separate_compilation_16b.f90)
RUN(NAME separate_compilation_17 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_17a.f90 separate_compilation_17b.f90)
RUN(NAME separate_compilation_18 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_18a.f90 separate_compilation_18b.f90)
RUN(NAME separate_compilation_19 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_19a.f90 separate_compilation_19b.f90)
RUN(NAME separate_compilation_20 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_20a.f90 separate_compilation_20b.f90)
RUN(NAME separate_compilation_21 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_21a.f90 separate_compilation_21b.f90)
RUN(NAME separate_compilation_22 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_22a.f90 separate_compilation_22b.f90)
RUN(NAME separate_compilation_23 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_23a.f90 separate_compilation_23b.f90)
RUN(NAME separate_compilation_24 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_24a.f90 separate_compilation_24b.f90)
RUN(NAME separate_compilation_25 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_25a.f90 separate_compilation_25b.f90)
RUN(NAME separate_compilation_26 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_26a.f90 separate_compilation_26b.f90)
RUN(NAME separate_compilation_27 LABELS gfortran llvm_submodule EXTRAFILES separate_compilation_27a.f90 separate_compilation_27b.f90)
RUN(NAME separate_compilation_28 LABELS gfortran llvm EXTRAFILES separate_compilation_28a.f90 separate_compilation_28b.f90 EXTRA_ARGS --implicit-interface)
RUN(NAME separate_compilation_29 LABELS gfortran llvm EXTRAFILES separate_compilation_29a.f90 separate_compilation_29b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_30 LABELS gfortran llvm EXTRAFILES separate_compilation_30a.f90 separate_compilation_30b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_31 LABELS gfortran llvm EXTRAFILES separate_compilation_31a.f90 separate_compilation_31b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_32 LABELS gfortran llvm EXTRAFILES separate_compilation_32a.f90 separate_compilation_32b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_33 LABELS llvm EXTRAFILES separate_compilation_33a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_34 LABELS gfortran llvm EXTRAFILES separate_compilation_34a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_35 LABELS gfortran llvm EXTRAFILES separate_compilation_35a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_36 LABELS gfortran llvm EXTRAFILES separate_compilation_36a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_37 LABELS gfortran llvm EXTRAFILES separate_compilation_37a.f90 separate_compilation_37b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_38 LABELS gfortran llvm EXTRAFILES separate_compilation_38a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_39 LABELS llvm EXTRAFILES separate_compilation_39a.f90 separate_compilation_39b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_40 LABELS llvm EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_41 LABELS gfortran llvm EXTRAFILES separate_compilation_41a.f90 separate_compilation_41b.f90 separate_compilation_41c.f90 EXTRA_ARGS --separate-compilation)

RUN(NAME separate_compilation_42 LABELS llvm EXTRA_ARGS --separate-compilation)

RUN(NAME separate_compilation_43 LABELS gfortran llvm EXTRAFILES separate_compilation_43a.f90 separate_compilation_43b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_44 LABELS gfortran llvm EXTRAFILES separate_compilation_44a.f90 separate_compilation_44b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_45 LABELS gfortran llvm EXTRAFILES separate_compilation_45a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_46 LABELS gfortran llvm EXTRAFILES separate_compilation_46a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_47 LABELS gfortran llvm EXTRAFILES separate_compilation_47a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_48 LABELS gfortran llvm EXTRAFILES separate_compilation_48a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_49 LABELS gfortran llvm EXTRAFILES separate_compilation_49a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_50 LABELS gfortran llvm EXTRAFILES separate_compilation_50a.f90 separate_compilation_50b.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_51 LABELS gfortran llvm EXTRAFILES separate_compilation_51a.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME separate_compilation_52 LABELS gfortran llvm EXTRAFILES separate_compilation_52a.f90 separate_compilation_52b.f90 EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME separate_compilation_53 LABELS gfortran llvm EXTRAFILES separate_compilation_53a.f90 separate_compilation_53b.f90 EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME separate_compilation_54 LABELS gfortran llvm EXTRAFILES separate_compilation_54a.f90 separate_compilation_54b.f90 EXTRA_ARGS --implicit-interface --separate-compilation)
RUN(NAME separate_compilation_55 LABELS gfortran llvm EXTRAFILES separate_compilation_55a.f90 EXTRA_ARGS --separate-compilation) # dot_product on a derived-type component section (#14036)
RUN(NAME separate_compilation_56 LABELS gfortran llvm EXTRAFILES separate_compilation_56a.f90 EXTRA_ARGS --separate-compilation --legacy-array-sections) # imported elemental procedure with array actuals (#14094)
RUN(NAME separate_compilation_57 LABELS gfortran llvm EXTRAFILES separate_compilation_57a.f90 EXTRA_ARGS --separate-compilation) # imported constructor of a type whose components are all inherited (#14339)
RUN(NAME separate_compilation_58 LABELS gfortran llvm EXTRAFILES separate_compilation_58a.f90 EXTRA_ARGS --separate-compilation) # module class pointer wrapper shared across translation units (#14292)
RUN(NAME separate_compilation_59 LABELS gfortran llvm EXTRAFILES separate_compilation_59a.f90 EXTRA_ARGS --separate-compilation) # module getter of an array bound called from another translation unit (#14415)
RUN(NAME separate_compilation_60 LABELS gfortran llvm EXTRAFILES separate_compilation_60a.f90 separate_compilation_60b.f90 EXTRA_ARGS --separate-compilation) # pass-made helper of a loaded module in a module-only translation unit
RUN(NAME separate_compilation_61 LABELS gfortran llvm EXTRAFILES separate_compilation_61a.f90 separate_compilation_61b.f90 EXTRA_ARGS --separate-compilation) # procedure-pointer component with a getter-bounded interface called from another translation unit (#14326)
RUN(NAME separate_compilation_62 LABELS gfortran llvm EXTRAFILES separate_compilation_62a.f90) # imported procedure pointer component with an assumed-length character dummy
RUN(NAME separate_compilation_63 LABELS llvm EXTRAFILES separate_compilation_63a.f90 EXTRA_ARGS --separate-compilation) # named constant with a procedure-pointer component targeting an imported procedure (#14793) (gfortran 13 at CI rejects procedure targets in initializer structure constructors)
RUN(NAME separate_compilation_64 LABELS llvm EXTRAFILES separate_compilation_64a.f90 EXTRA_ARGS --separate-compilation) # component of a named constant holding a procedure-pointer component targeting an imported procedure (#14794) (gfortran 13 at CI rejects procedure targets in initializer structure constructors)
RUN(NAME separate_compilation_65 LABELS llvm EXTRAFILES separate_compilation_65a.f90 EXTRA_ARGS --separate-compilation) # data component of a named constant holding a procedure-pointer component targeting an imported procedure (#14794) (gfortran 13 at CI rejects procedure targets in initializer structure constructors)
RUN(NAME separate_compilation_66 LABELS llvm EXTRAFILES separate_compilation_66a.f90 EXTRA_ARGS --separate-compilation) # procedure-local procedure pointer and saved derived-type initializers targeting an imported procedure (#14793) (gfortran 13 at CI rejects procedure targets in initializer structure constructors)
RUN(NAME separate_compilation_67 LABELS gfortran llvm EXTRAFILES separate_compilation_67a.f90 EXTRA_ARGS --separate-compilation) # zero extent of an explicit-shape result of a separate module procedure and of an external procedure through an interface body, called from another translation unit (#13475)
RUN(NAME separate_compilation_68 LABELS gfortran llvm EXTRAFILES separate_compilation_68a.f90 EXTRA_ARGS --separate-compilation) # zero extent of an explicit-shape result and dummy of a module procedure called from another translation unit (#13475)
RUN(NAME separate_compilation_69 LABELS gfortran llvm EXTRAFILES separate_compilation_69a.f90)
RUN(NAME separate_compilation_70 LABELS gfortran llvm EXTRAFILES separate_compilation_70a.f90)
RUN(NAME separate_compilation_71 LABELS gfortran llvm EXTRAFILES separate_compilation_71a.f90 separate_compilation_71b.f90 EXTRA_ARGS --separate-compilation --all-mangling --mangle-underscore) # intrinsic module procedures compiled into two object files link (#16082)
RUN(NAME separate_compilation_72 LABELS gfortran llvm
    EXTRA_ARGS --separate-compilation --implicit-interface
    EXTRAFILES separate_compilation_72a.f90 separate_compilation_72b.f90)
RUN(NAME separate_compilation_74 LABELS gfortran llvm EXTRAFILES separate_compilation_74a.f90) # ieee_value(x, ieee_quiet_nan) and ieee_is_nan in a module compiled to its own object file (#8714)

RUN(NAME no_explicit_return_type_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc
    EXTRA_ARGS --implicit-typing)

RUN(NAME logical_testing LABELS gfortran llvm)

RUN(NAME runtime_input_records LABELS gfortran llvm)
RUN(NAME formatted_read_01 LABELS gfortran llvm COPY_TO_BIN formatted_read_input_01.txt)
RUN(NAME formatted_read_02 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME formatted_read_03 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME formatted_read_04 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME formatted_read_05 LABELS gfortran llvm)
RUN(NAME formatted_read_06 LABELS gfortran llvm)
RUN(NAME formatted_read_07 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME formatted_read_08 LABELS gfortran llvm)
RUN(NAME formatted_read_09 LABELS gfortran llvm) # B edit descriptor read into integer(int8), then transfer to real64 (#11942)

RUN(NAME format_before_read_01 LABELS gfortran llvm)


# LFortran extensions (lists, dicts, etc.)
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) # No gfortran
RUN(NAME list_of_tuples_test LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran


# Completely ported tests
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 # Fix segault
RUN(NAME dict_test_04_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME dict_test_07_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME dict_test_13_ LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran

# LFortran extensions (union)
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

# LFortran extenstion (Python's str)

RUN(NAME test_str LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME test_ord LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME test_rep LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME test_rep_02 LABELS llvm llvm_wasm llvm_wasm_emcc) # No gfortran
RUN(NAME str_to_char LABELS gfortran llvm)

# test for polymorphic select type
RUN(NAME polymorphic_select_type_01 LABELS gfortran llvm)
RUN(NAME polymorphic_select_type_02 LABELS gfortran llvm)
RUN(NAME defined_op_match_01 LABELS gfortran llvm)
RUN(NAME defined_op_match_02 LABELS gfortran llvm)

#test for forward declaration of derived type
RUN(NAME proc_ptr_nopass_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME proc_ptr_14 LABELS gfortran llvm)
RUN(NAME proc_ptr_15 LABELS gfortran llvm)
RUN(NAME proc_ptr_16 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME proc_ptr_17 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME proc_ptr_19 LABELS gfortran llvm EXTRA_ARGS --implicit-interface)
RUN(NAME proc_ptr_18 LABELS gfortran llvm)
RUN(NAME proc_ptr_20 LABELS gfortran llvm)
RUN(NAME proc_ptr_21 LABELS gfortran llvm)
RUN(NAME proc_ptr_22 LABELS gfortran llvm)
RUN(NAME proc_ptr_23 LABELS gfortran llvm)
RUN(NAME proc_ptr_24 LABELS gfortran llvm)
RUN(NAME proc_ptr_25 LABELS gfortran llvm)
RUN(NAME proc_ptr_26 LABELS gfortran llvm)
RUN(NAME proc_ptr_27 LABELS gfortran llvm)
RUN(NAME proc_ptr_28 LABELS gfortran llvm)
RUN(NAME proc_ptr_29 LABELS gfortran llvm)
RUN(NAME proc_ptr_30 LABELS gfortran llvm)
RUN(NAME proc_ptr_31 LABELS gfortran llvm)
RUN(NAME proc_ptr_32 LABELS gfortran llvm)
RUN(NAME proc_ptr_33 LABELS gfortran llvm)
RUN(NAME proc_ptr_34 LABELS gfortran llvm EXTRA_ARGS --implicit-typing --implicit-interface)
RUN(NAME proc_ptr_35 LABELS gfortran llvm)
RUN(NAME proc_ptr_36 LABELS llvm) # gfortran 13 at CI rejects procedure targets in initializer structure constructors
RUN(NAME proc_ptr_37 LABELS gfortran llvm)
RUN(NAME proc_ptr_38 LABELS gfortran llvm)
RUN(NAME proc_ptr_39 LABELS gfortran llvm)
RUN(NAME proc_ptr_40 LABELS gfortran llvm) # interface result length calls a function use associated only in the interface (#15004)
RUN(NAME proc_ptr_46 LABELS gfortran llvm) # procedure pointer component whose interface result length calls a function (#15004)
RUN(NAME proc_ptr_47 LABELS gfortran llvm) # same, with an internal procedure as the interface (#15004)
RUN(NAME proc_ptr_48 LABELS gfortran llvm) # elemental specific intrinsic and nonelemental procedure targets (#16573)
RUN(NAME proc_ptr_nopass_02 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_03 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_04 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_05 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_06 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_07 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_08 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_09 LABELS gfortran llvm)
RUN(NAME proc_ptr_nopass_10 LABELS gfortran llvm)
RUN(NAME write_substr_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME write_implied_do_1 LABELS gfortran llvm)
RUN(NAME write_implied_do_2 LABELS gfortran llvm)
RUN(NAME move_alloc_derived_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME move_alloc_derived_02 LABELS gfortran llvm)
RUN(NAME move_alloc_class_01 LABELS gfortran llvm)
RUN(NAME move_alloc_class_02 LABELS gfortran llvm)
RUN(NAME move_alloc_class_03 LABELS gfortran llvm)
RUN(NAME move_alloc_finalize_01 LABELS gfortran llvm)
RUN(NAME array_section_assign_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_section_assign_02 LABELS gfortran llvm)
RUN(NAME array_section_assign_03 LABELS gfortran llvm)
RUN(NAME array_section_assign_04 LABELS gfortran llvm)
RUN(NAME array_section_assign_05 FILE array_section_assign_04 LABELS llvm
    EXTRA_ARGS --descriptor-index-64)
RUN(NAME array_section_assign_06 LABELS gfortran llvm)
RUN(NAME array_section_assign_07 LABELS gfortran llvm EXTRA_ARGS -g GFORTRAN_ARGS -g)
RUN(NAME array_section_assign_08 LABELS gfortran llvm)
RUN(NAME array_section_assign_09 LABELS gfortran llvm)
RUN(NAME array_section_assign_10 LABELS gfortran llvm NO_FAST_MATH) # LLVM 23 fast-math miscompile (#17064)
RUN(NAME array_section_assign_11 LABELS gfortran llvm)
RUN(NAME array_section_assign_12 LABELS gfortran llvm)
RUN(NAME array_section_assign_13 LABELS gfortran llvm)
RUN(NAME array_section_assign_14 LABELS llvm)
RUN(NAME array_item_in_bounds_01 LABELS gfortran llvm)
RUN(NAME array_in_place_sections_01 LABELS gfortran llvm)
RUN(NAME array_conditional_window_updates LABELS gfortran llvm)
RUN(NAME array_item_in_bounds_02 LABELS gfortran llvm)

RUN(NAME intent_out_array_01 LABELS gfortran llvm)
RUN(NAME intent_out_allocatable_component_dealloc LABELS gfortran llvm)
RUN(NAME intent_out_struct_member_no_dealloc LABELS gfortran llvm)
RUN(NAME intent_out_module_dealloc LABELS gfortran llvm)
RUN(NAME intent_out_nested_allocatable_01 LABELS gfortran llvm)
RUN(NAME intent_out_array_structs_01 LABELS gfortran llvm)
RUN(NAME intent_out_array_of_struct_dealloc LABELS gfortran llvm)
RUN(NAME intent_out_array_default_init_01 LABELS gfortran llvm)
RUN(NAME intent_out_array_default_init_02 LABELS gfortran llvm)
RUN(NAME intent_out_array_default_init_03 LABELS gfortran llvm)
# gfortran 13.3 does not apply these defaults to a scalar intent(out) dummy
# of a finalizable type (it keeps the caller's values), so llvm only
RUN(NAME intent_out_array_default_init_04 LABELS llvm)
RUN(NAME array_shape_func_call LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME array_neg_extent_01 LABELS gfortran llvm)

RUN(NAME ilp64_kind_arg_01 LABELS llvm EXTRA_ARGS -fdefault-integer-8 GFORTRAN_ARGS -fdefault-integer-8)

# Type inference with := syntax
RUN(NAME infer_walrus_01 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_02 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_03 LABELS llvm_infer NO_STD_F23)

# Type inference with := syntax (arrays)
RUN(NAME infer_walrus_array_01 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_array_02 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_array_03 LABELS llvm_infer NO_STD_F23)

# Type inference with := syntax (derived types)
RUN(NAME infer_walrus_struct_01 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_struct_02 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_struct_03 LABELS llvm_infer NO_STD_F23)

# Type inference scope shadowing
RUN(NAME infer_walrus_shadow_01 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_shadow_02 LABELS llvm_infer NO_STD_F23)
RUN(NAME infer_walrus_shadow_03 LABELS llvm_infer NO_STD_F23)

RUN(NAME verify_intent_external_01 LABELS gfortran llvm EXTRAFILES
        verify_intent_external_01_mod1.f90 verify_intent_external_01_mod2.f90)

# UTF-8 BOM handling
RUN(NAME utf8_bom_01 LABELS gfortran llvm)

RUN(NAME allocatable_lhs_finalization_01 LABELS llvm)

RUN(NAME deferred_shape_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)

RUN(NAME assumed_type_01 LABELS gfortran llvm)
RUN(NAME assumed_type_02 LABELS gfortran llvm EXTRAFILES assumed_type_02.c)
RUN(NAME assumed_type_03 LABELS gfortran llvm EXTRAFILES assumed_type_03.c)
RUN(NAME assumed_type_04 LABELS gfortran llvm EXTRAFILES assumed_type_04.c)
RUN(NAME assumed_type_05 LABELS gfortran llvm)
RUN(NAME assumed_type_06 LABELS gfortran llvm)
RUN(NAME assumed_type_07 LABELS gfortran llvm)
RUN(NAME assumed_type_08 LABELS gfortran llvm EXTRAFILES assumed_type_08.c)
RUN(NAME allocatable_cchar_01 LABELS gfortran llvm)
RUN(NAME allocatable_nested_types_01 LABELS gfortran llvm)
RUN(NAME allocatable_derived_array_01 LABELS gfortran llvm)
RUN(NAME allocatable_component_assign_01 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_component_assign_recursive_01 LABELS flang llvm)
RUN(NAME allocatable_component_reshape_unallocated_01 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_component_unnamed_unallocated_01 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME allocatable_oob_01 FAIL LABELS gfortran llvm NO_FAST GFORTRAN_ARGS -fcheck=bounds)

RUN(NAME sync_all_01 LABELS llvm)
RUN(NAME sync_all_02 LABELS gfortran llvm GFORTRAN_ARGS -fcoarray=single)
RUN(NAME sync_memory_01 LABELS llvm)

RUN(NAME random_init_01 LABELS gfortran llvm)
RUN(NAME random_init_02 LABELS gfortran llvm)
RUN(NAME random_init_03 LABELS gfortran llvm)
RUN(NAME random_number_01 LABELS gfortran llvm)
RUN(NAME random_number_complex_part_01 LABELS gfortran llvm)
RUN(NAME random_number_02 LABELS gfortran llvm)
RUN(NAME random_number_03 LABELS gfortran llvm EXTRA_ARGS --separate-compilation)
RUN(NAME random_number_04 LABELS gfortran llvm)
RUN(NAME random_seed_01 LABELS gfortran llvm)
RUN(NAME random_seed_02 LABELS gfortran llvm)
RUN(NAME date_and_time_01 LABELS gfortran llvm)
# GFortran rejects an assumed-size VALUES at run time (extent 0)
RUN(NAME date_and_time_02 LABELS llvm)
RUN(NAME srand_01 LABELS gfortran llvm)
RUN(NAME pure_side_effects_01 LABELS gfortran llvm)
RUN(NAME pure_array_repeated_calls_01 LABELS gfortran llvm)
RUN(NAME pure_side_effects_02 LABELS gfortran llvm)
RUN(NAME set_exponent_01 LABELS gfortran llvm)
RUN(NAME count_param_01 LABELS gfortran llvm)
RUN(NAME count_with_kind LABELS gfortran llvm)
RUN(NAME char_param_reshape_01 LABELS gfortran llvm)
RUN(NAME insertion_sort_01 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME iachar_achar_01 LABELS gfortran llvm)
RUN(NAME stdlib_bitsets_01 LABELS gfortran llvm)
RUN(NAME pure_side_effects_03 LABELS gfortran llvm)
RUN(NAME pure_side_effects_04 LABELS gfortran llvm)
RUN(NAME pure_side_effects_05 LABELS gfortran llvm c)
RUN(NAME pure_intent_01 LABELS gfortran llvm)
RUN(NAME pure_intent_02 LABELS gfortran llvm)
RUN(NAME pure_intent_03 LABELS gfortran llvm)
RUN(NAME merge_str_01 LABELS gfortran llvm)
RUN(NAME merge_derived_01 LABELS gfortran llvm)
RUN(NAME merge_derived_02 LABELS gfortran llvm)
RUN(NAME io_direct_slash LABELS gfortran llvm)
RUN(NAME achar_kind_01 LABELS gfortran llvm)
RUN(NAME char4_string_intrinsics_01 LABELS gfortran llvm)
RUN(NAME char4_io_01 LABELS gfortran llvm)
RUN(NAME char4_io_02 LABELS gfortran llvm)
RUN(NAME char4_string_intrinsics_02 LABELS gfortran llvm)
# GFortran treats each source byte of a kind 4 literal as one character,
# LFortran (like LLVM Flang) decodes the UTF-8 source into code points.
RUN(NAME char4_string_literal_01 LABELS llvm)

#test for coarray
RUN(NAME coarray_01 LABELS gfortran GFORTRAN_ARGS -fcoarray=single)
RUN(NAME coarrays_03 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_04 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_05 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_06 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_07 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_09 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_10 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_11 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_12 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_13 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_14 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_15 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_16 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_17 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_18 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_19 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_20 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_21 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_22 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_23 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_24 EXTRA_ARGS --coarray=true)

RUN(NAME coarrays_26 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_27 EXTRA_ARGS --coarray=true NUM_IMAGES=4)

RUN(NAME coarrays_29 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_30 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_31 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_32 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_33 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_34 EXTRA_ARGS --coarray=true NUM_IMAGES=4)
RUN(NAME coarrays_35 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_36 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_37 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_38 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_39 EXTRA_ARGS --coarray=true NUM_IMAGES=6)
RUN(NAME coarrays_40 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_41 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_42 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_43 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_44 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_45 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_46 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_47 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_48 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_49 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_50 EXTRA_ARGS --coarray=true NUM_IMAGES=4)
RUN(NAME coarrays_51 EXTRA_ARGS --coarray=true --separate-compilation EXTRAFILES coarrays_51_m.f90 NUM_IMAGES=4)
RUN(NAME coarrays_52 EXTRA_ARGS --coarray=true)
RUN(NAME coarrays_53 EXTRA_ARGS --coarray=true EXTRAFILES coarrays_53_sub.f90)

# A GPU backend offloads every `do concurrent` (see doc/src/gpu_offloading.md).
# A loop that uses a construct on the unsupported list of the device -- a
# `real(8)` on Metal, a `real(10)` or `real(16)`, input/output, or a `stop` or
# `error stop` on Metal -- is a compile error unless `--gpu-allow-cpu-fallback`
# is given, which runs it on the CPU with a warning; the tests below ask for
# the flag on the backends whose list their loops hit. Any other loop that
# cannot be offloaded is a lowering LFortran is missing and fails the
# compilation with or without the flag. A program whose loops hit such a gap
# is registered below without the gpu labels until the gap is closed, and the
# diagnostic is tracked by a `gpu_offload_cuda` or `gpu_offload_metal`
# reference test in tests/tests.toml.
RUN(NAME gpu_metal_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_04 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_05 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_06 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_07 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_08 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_09 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_10 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_11 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_12 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_13 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_14 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_15 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_16 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_17 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_18 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_19 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_20 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_21 LABELS llvm metal cuda)
RUN(NAME gpu_metal_22 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_23 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_24 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_25 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_26 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_27 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_28 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_29 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_30 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_31 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_32 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_33 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_34 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_35 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_36 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_37 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_38 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_39 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_40 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_41 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_42 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_43 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_44 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_45 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_46 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_47 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_48 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_49 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_50 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_51 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_52 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_53 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_54 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_55 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_56 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_57 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_58 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_59 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_60 LABELS gfortran llvm)
RUN(NAME gpu_metal_61 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_62 LABELS llvm metal cuda)
RUN(NAME gpu_metal_63 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_64 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_65 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_66 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_67 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_68 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_69 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_70 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_71 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_72 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_73 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_74 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_75 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_76 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_77 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_78 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_79 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_80 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_81 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_82 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_83 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_84 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_85 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_86 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_87 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_88 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_89 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_90 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_91 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_92 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_93 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_94 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_95 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_96 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_97 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_98 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_99 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_100 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_101 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_102 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_103 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_104 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_105 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_106 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_107 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_108 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_109 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_110 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_111 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_112 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_113 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_114 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_115 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_116 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_117 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_118 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_119 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_120 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_121 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_122 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_123 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_124 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_125 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_126 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_127 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_128 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_129 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_130 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_131 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_132 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_133 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_134 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_134_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_135 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_135_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_136 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_136_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_137 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_138 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_139 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_140 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_140_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_141 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_142 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_142_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_143 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_144 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_144_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_145 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_146 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_147 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_147_activation.f90 gpu_metal_147_neural_network.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_148 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_149 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_150 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_cuda_cpu_01 LABELS gfortran llvm cuda EXTRAFILES gpu_cuda_cpu_01_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_cuda_cpu_archive_01 LABELS gfortran llvm cuda STATIC_LIBRARY_FILES gpu_cuda_cpu_archive_01_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_memory_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_wait_reads_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_keep_reads_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_keep_reads_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_rsqrt_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_rsqrt_01_fast FILE gpu_rsqrt_01 LABELS gfortran llvm cuda EXTRA_ARGS --fast)
RUN(NAME gpu_type_inquiry_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_shift_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_memory_02 LABELS gfortran llvm cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_memory_02_managed FILE gpu_memory_02 LABELS llvm cuda EXTRA_ARGS --realloc-lhs-arrays)
if (TEST gpu_memory_02_managed)
    # The managed memory model, which the CPU emulation and most devices
    # only use when asked.
    set_tests_properties(gpu_memory_02_managed PROPERTIES
        ENVIRONMENT "LFORTRAN_GPU_MEMORY=managed")
endif()
RUN(NAME gpu_memory_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_memory_03_copy FILE gpu_memory_03 LABELS llvm metal cuda)
if (TEST gpu_memory_03_copy)
    # The copy model, which Metal on an Apple GPU only uses when asked.
    set_tests_properties(gpu_memory_03_copy PROPERTIES
        ENVIRONMENT "LFORTRAN_GPU_MEMORY=copy")
endif()
RUN(NAME gpu_memory_04 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_reduce_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_lanes_blocks_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_calls_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_reduce_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_blocks_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_liveout_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_reuse_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_nested_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_unroll_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_branches_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_columns_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_parts_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_lanes_columns_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_separate_compilation_01 LABELS gfortran llvm metal cuda EXTRAFILES gpu_separate_compilation_01_mod.f90 EXTRA_ARGS --separate-compilation)
# Only the module's own compilation needs the fallback for its loop that
# prints: the program that uses it compiles none of the module's loops.
if (LFORTRAN_BACKEND MATCHES "^(metal|cuda|cuda_cpu|hip)$")
    set_source_files_properties(gpu_separate_compilation_01_mod.f90
        PROPERTIES COMPILE_OPTIONS "--gpu-allow-cpu-fallback")
endif()
# The GPU backends link without `--openmp`: an OpenMP lowering of the
# module's loops in the program's file would not link.
RUN(NAME gpu_separate_compilation_02 LABELS gfortran llvm_omp metal cuda EXTRAFILES gpu_separate_compilation_02_mod.f90 EXTRA_ARGS --separate-compilation --openmp)
RUN(NAME gpu_metal_151 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_151_dep.f90 gpu_metal_151_net.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_152 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_153 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_154 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_155 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_156 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_157 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_158 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_159 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_160 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_161 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_161_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_162 LABELS gfortran llvm)
RUN(NAME gpu_metal_163 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_164 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_165 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_166 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_167 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_168 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_169 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_170 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_171 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_172 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_173 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_174 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_175 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_176 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_177 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_178 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_179 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_180 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_181 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_182 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_183 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_184 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_185 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_186 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_187 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_188 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_189 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_190 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_191 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_192 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_193 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_194 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_195 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_196 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_197 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_198 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_199 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_200 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_201 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_202 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_203 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_204 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-allow-cpu-fallback)
RUN(NAME gpu_metal_205 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_206 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_207 LABELS gfortran llvm)
RUN(NAME gpu_metal_208 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_209 LABELS gfortran llvm metal cuda)
# gpu_metal_210 onward were written against the Metal path. Twelve of
# them are not labelled cuda: the CUDA lowering does not yet compile
# them, and labelling a test for a backend that cannot run it says nothing
# about the backend it was written for. gpu_metal_217 was one of them: the
# CUDA path used to lower its logical(8) loop to a 4-byte int kernel rather
# than decline it, so the label would have caught a wrong answer. It does
# decline it now, and carries the label.
RUN(NAME gpu_metal_210 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_211 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_212 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_213 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_214 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_215 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_216 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_217 LABELS gfortran llvm)
RUN(NAME gpu_metal_218 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_219 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_220 LABELS gfortran llvm)
RUN(NAME gpu_metal_221 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_222 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_223 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_224 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_225 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_226 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_227 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_228 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_229 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_230 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_231 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_232 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_233 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_234 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_235 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_236 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_237 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_238 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_239 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_240 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_241 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_242 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_243 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_244 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_245 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_246 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_247 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_248 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_249 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_250 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_251 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_252 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_253 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_254 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_255 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_256 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_257 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_258 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_259 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_260 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_261 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_262 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_263 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_263_mod.f90 EXTRA_ARGS --separate-compilation --realloc-lhs-arrays)
RUN(NAME gpu_metal_264 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_265 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_266 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_267 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_268 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_269 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_270 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_271 LABELS gfortran llvm)
RUN(NAME gpu_metal_272 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_273 LABELS gfortran llvm)
RUN(NAME gpu_metal_274 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_275 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_276 LABELS gfortran llvm)
RUN(NAME gpu_metal_277 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_278 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_279 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_280 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_281 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_281_mod.f90 EXTRA_ARGS --separate-compilation --realloc-lhs-arrays)
RUN(NAME gpu_metal_282 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_282_mod.f90 EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_283 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_283_mod.f90 EXTRA_ARGS --separate-compilation --realloc-lhs-arrays)
RUN(NAME gpu_metal_284 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_284_mod.f90 EXTRA_ARGS --separate-compilation --realloc-lhs-arrays)
RUN(NAME gpu_metal_285 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_286 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_287 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_288 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_289 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_290 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_291 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-allow-cpu-fallback)
RUN(NAME gpu_metal_292 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_293 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_294 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_295 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_296 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_297 LABELS gfortran llvm)
RUN(NAME gpu_metal_298 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_299 LABELS gfortran llvm)
RUN(NAME gpu_metal_300 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_301 LABELS gfortran llvm)
RUN(NAME gpu_metal_302 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_303 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_304 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_305 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_306 LABELS gfortran llvm metal cuda)
# Fortran 2023 `(cond ? a : b)`; no gfortran, same reason as conditional_expr_*.
RUN(NAME gpu_metal_307 LABELS llvm metal cuda)
RUN(NAME gpu_metal_308 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_309 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_310 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_311 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_312 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_313 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_314 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_315 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_316 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_317 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_318 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_319 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_320 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_321 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_322 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_323 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_324 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_325 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_326 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_327 LABELS gfortran llvm EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_328 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_329 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_330 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_331 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_332 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_333 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_334 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_335 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_336 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_337 FAIL LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_338 LABELS gfortran llvm metal cuda)
# No gfortran label: `reduce` is F2023, and the gfortran the CI builds with
# rejects it outright ("Syntax error in DO statement"). Same reason
# gpu_metal_21 above carries none. Checked by hand against gfortran 16,
# which does accept it.
RUN(NAME gpu_metal_339 LABELS llvm metal cuda)
RUN(NAME gpu_metal_340 LABELS llvm metal cuda EXTRA_ARGS --separate-compilation --gpu-split-min-iterations=0) # `shared` locality is not accepted by every supported gfortran
RUN(NAME gpu_metal_341 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_342 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_343 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_344 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_345 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_346 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_347 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_348 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_349 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_350 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_351 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_352 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_353 LABELS llvm metal cuda) # conditional expressions are not accepted by every supported gfortran
# With --fast the device function is inlined, and its dummy is the gathered
# copy of the section.
RUN(NAME gpu_metal_352_fast FILE gpu_metal_352 LABELS gfortran llvm cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_353_fast FILE gpu_metal_353 LABELS llvm cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_354 LABELS llvm metal cuda) # conditional expressions are not accepted by every supported gfortran
RUN(NAME gpu_metal_355 LABELS llvm metal cuda) # `local` locality is not accepted by every supported gfortran
RUN(NAME gpu_metal_356 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_372 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_357 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_360 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_361 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_362 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_365 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_366 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_371 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_367 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_373 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_374 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_378 LABELS llvm cuda) # integer(8) loop index is supported in both CUDA modes; metal declines integer(8); gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_379 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_380 LABELS llvm metal cuda) # gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_383 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_384 FAIL LABELS gfortran llvm metal cuda)
# gpu_metal_381 has a BLOCK array whose extent is known only at run time,
# which a Metal shader cannot declare yet, so it has no metal label.
RUN(NAME gpu_metal_381 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_382 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_386 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_387 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_388 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_389 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_390 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_391 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_406 LABELS gfortran llvm) # the GPU backends report an error, see tests/tests.toml
RUN(NAME gpu_metal_407 LABELS gfortran llvm) # the GPU backends report an error, see tests/tests.toml
RUN(NAME gpu_metal_408 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_392 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_393 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_394 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_409 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_410 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_411 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_412 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
# A component whose size the host cannot work out before the loop: the
# value is made on the device heap and copied out after the launch.
RUN(NAME gpu_metal_358 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_368 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_376 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
# A launch that allocates more than the device heap holds stops; on the CPU
# each iteration frees what it allocates, so the test is GPU-only.
RUN(NAME gpu_metal_414 FAIL LABELS metal cuda)
RUN(NAME gpu_metal_415 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_416 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays --no-array-bounds-checking)
RUN(NAME gpu_metal_419 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_420 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_417 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_418 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_421 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_422 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_423 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_424 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_425 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_426 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_427 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_428 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_429 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_430 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_431 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_432 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_433 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_434 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_metal_436 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_437 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_438 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_439 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_440 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_441 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_442 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_443 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_444 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_450 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_449 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_454 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_445 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_460 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_461 FAIL LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_462 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_463 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_464 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_465 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_447 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_448 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_temp_lifetime_01 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_455 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_456 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_451 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_452 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_453 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_470 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_471 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_472 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_473 FAIL LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_474 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_475 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_476 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_477 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_478 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_479 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_480 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_481 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_488 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_489 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_489_mod.f90 EXTRA_ARGS --separate-compilation)
# GFortran 13 in Quick cannot compile the LOCAL locality of gpu_metal_505.
RUN(NAME gpu_metal_505 LABELS llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_506 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_507 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_discard_guard_extremes LABELS gfortran llvm metal cuda)
# GFortran 13 in Quick does not support REDUCE.
RUN(NAME gpu_metal_482 LABELS llvm metal cuda)
# GFortran 13 in Quick cannot compile these LOCAL locality fixtures.
RUN(NAME gpu_metal_483 LABELS llvm metal cuda)
RUN(NAME gpu_metal_510 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_512 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_515 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_516 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_517 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_518 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_519 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_520 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_521 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_522 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-loop-transforms=none)
RUN(NAME gpu_metal_523 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-loop-transforms=swap)
RUN(NAME gpu_metal_540 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_541 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_542 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_543 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_544 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_545 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_546 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_547 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_548 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_549 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_550 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_551 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_552 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_553 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_554 LABELS gfortran llvm metal cuda)
# Loop fusion legality: the fusion runs only for --gpu=cuda and cuda_cpu.
RUN(NAME gpu_metal_560 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_561 LABELS gfortran llvm cuda)
# A non-rectangular collapsed `!$omp parallel do` offloaded to the device,
# or with llvm_omp dispatched as a canonical region to host threads.
RUN(NAME gpu_metal_580 LABELS gfortran llvm_omp cuda EXTRA_ARGS --openmp --gpu-offload-omp-loops GFORTRAN_ARGS -fopenmp)
# A nested `do concurrent` ending an IF/loop/SELECT body in a device procedure.
RUN(NAME gpu_metal_564 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_562 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_563 LABELS gfortran metal cuda) # plain LLVM cannot find a do concurrent by name
RUN(NAME gpu_metal_565 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_566 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_600 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_601 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_690 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_691 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64 --gpu-split-min-iterations=0) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_692 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_693 LABELS llvm cuda EXTRA_ARGS --descriptor-index-64) # no gfortran: GFortran 16 crashes on LOCAL of an automatic array
RUN(NAME gpu_metal_694 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_695 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64 --gpu-split-min-iterations=0) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_696 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_602 LABELS llvm cuda EXTRA_ARGS --descriptor-index-64) # no gfortran: the GFortran in CI rejects reduce
RUN(NAME gpu_metal_599 LABELS gfortran llvm cuda)
# Procedures copied into a kernel and the entities they name of their
# hosts and modules.
RUN(NAME gpu_metal_570 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_571 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_572 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_573 LABELS gfortran llvm metal cuda c)
RUN(NAME gpu_metal_574 LABELS gfortran llvm metal cuda c)
RUN(NAME gpu_metal_575 LABELS gfortran llvm cuda) # not checked on metal: a module derived-type variable a device procedure reads is handed to it as a thread reference (#15933)
RUN(NAME gpu_metal_576 LABELS gfortran llvm cuda) # metal declines real(8)
RUN(NAME gpu_metal_577 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_578 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_579 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_590 LABELS gfortran llvm metal cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_591 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_workspace_guard_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_workspace_guard_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_workspace_guard_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_592 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_593 LABELS gfortran llvm metal cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_594 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_595 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_595_fast FILE gpu_metal_595 LABELS gfortran llvm metal cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_596 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_620 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_621 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_622 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_625 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_626 LABELS llvm metal cuda llvm_omp) # gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_627 LABELS metal cuda llvm_omp EXTRA_ARGS --openmp) # gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_628 LABELS metal cuda EXTRA_ARGS --openmp --gpu-offload-omp-loops) # gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_629 LABELS llvm metal cuda) # gfortran on CI lacks reduce clause
RUN(NAME gpu_metal_630 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_631 LABELS gfortran llvm cuda) # metal declines real(8)
RUN(NAME gpu_metal_635 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_636 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_637 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_638 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_639 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_640 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_641 LABELS gfortran llvm metal cuda)
# integer(8) values in kernels; Metal still numbers iterations in 32 bits.
RUN(NAME gpu_metal_650 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_651 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_652 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_653 LABELS gfortran llvm cuda) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_654 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_655 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_656 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_657 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_658 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_659 LABELS gfortran llvm metal)
RUN(NAME gpu_reserved_names_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_identifiers_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_identifiers_02 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_identifiers_03 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_metal_645 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_646 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_647 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_648 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_log_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_nested_block_calls_01 LABELS gfortran llvm metal cuda)
# Launches that run their kernel in chunks of the iteration space
# (lfortran/lfortran#16569), forced on small loops by a low chunk limit.
RUN(NAME gpu_metal_609 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-chunk-limit=7) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_609_limit_1 FILE gpu_metal_609 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_metal_610 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_611 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_612 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1000)
RUN(NAME gpu_metal_613 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=5)
# Chunks at the ends of the integer(4) range, which the kernel numbers in 32
# bits, and of the integer(8) range, and nests of a tiled shape in chunks
# with scalars the host reads.
RUN(NAME gpu_metal_680 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_680_limit_1 FILE gpu_metal_680 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_metal_681 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1000)
RUN(NAME gpu_metal_682 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-chunk-limit=7) # metal declines integer(8) loop indices
# Reductions across the chunks of a launch.
RUN(NAME gpu_metal_665 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_665_limit_1 FILE gpu_metal_665 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_metal_666 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_666_limit_1 FILE gpu_metal_666 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_metal_667 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_668 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-chunk-limit=7) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_669 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=50)
RUN(NAME gpu_metal_670 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=4)
# Constant extents, decided at compile time: split above the chunk limit,
# one launch at or below it.
RUN(NAME gpu_metal_675 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_676 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=50)
RUN(NAME gpu_metal_677 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_678 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=48)
RUN(NAME gpu_metal_679 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=480)
# Existing tests forced to run in chunks: an `error stop` (status buffer),
# the device heap, a packed launch (more than 31 buffers) and a liveout.
RUN(NAME gpu_metal_337_chunked FILE gpu_metal_337 FAIL LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=3)
RUN(NAME gpu_metal_410_chunked FILE gpu_metal_410 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=4)
RUN(NAME gpu_metal_78_chunked FILE gpu_metal_78 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_liveout_01_chunked FILE gpu_liveout_01 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
# Values made on the device heap by every chunk, copied out after the launch.
RUN(NAME gpu_metal_358_chunked FILE gpu_metal_358 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays --gpu-chunk-limit=2)
RUN(NAME gpu_metal_415_chunked FILE gpu_metal_415 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays --gpu-chunk-limit=2)
RUN(NAME gpu_metal_420_chunked FILE gpu_metal_420 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays --gpu-chunk-limit=2)
# Metal runs launches in chunks too (lfortran/lfortran#16541): a nest of
# more than huge(0) iterations, and small loops forced into many chunks.
# gpu_metal_685 runs 2**31 + 1 iterations: about 1 s on Metal and 2.5 s with
# GFortran, but about 4 s with LFortran on the CPU (`llvm`) and 6.6 s on
# cuda_cpu (`cuda`), so it has neither label.
RUN(NAME gpu_metal_685 LABELS gfortran metal)
RUN(NAME gpu_metal_686 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=5)
RUN(NAME gpu_metal_687 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=3)
RUN(NAME gpu_metal_688 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=4)
RUN(NAME gpu_metal_689 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=1)
RUN(NAME gpu_metal_597 FAIL LABELS cuda) # stops: an array of more than huge(0) elements needs --descriptor-index-64
RUN(NAME gpu_metal_660 FAIL LABELS metal) # stops: Metal kernels address at most huge(0) elements of an array
RUN(NAME gpu_metal_661 FILE gpu_metal_660 FAIL LABELS metal EXTRA_ARGS --descriptor-index-64) # stops: --descriptor-index-64 does not widen Metal kernel offsets
# A launch whose iteration count does not fit in its integer kind stops; the
# CPU would run these nests for ever, so they run only offloaded.
RUN(NAME gpu_metal_700 FAIL LABELS metal cuda) # stops: the product of two extents overflows (tiled on CUDA)
RUN(NAME gpu_metal_701 FAIL LABELS cuda) # stops: one integer(8) extent overflows; metal declines integer(8) loop indices
RUN(NAME gpu_metal_702 FAIL LABELS metal cuda) # stops: the product overflows at its last factor, with a reduction
RUN(NAME gpu_metal_703 FAIL LABELS metal cuda) # stops: constant extents whose product overflows
RUN(NAME gpu_metal_705 FAIL LABELS cuda) # stops: a constant integer(8) extent overflows; metal declines integer(8) loop indices
RUN(NAME gpu_metal_704 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_704_chunked FILE gpu_metal_704 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
RUN(NAME gpu_metal_706 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=4000)
RUN(NAME gpu_metal_707 LABELS gfortran llvm metal cuda) # empty tiled nest: no padded thread count
RUN(NAME gpu_metal_713 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0) # split frame rows below -huge(0) - 1 and bounds at huge(0)
RUN(NAME gpu_metal_714 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=1000000 --gpu-split-min-iterations=0) # jammed split near -huge(0)
# The allocatable components of an array of a derived type, packed end to end
# for the kernel, with their offsets and extents in the kernel's offset kind
# (#15929); without 64-bit offsets a launch whose components hold more than
# huge(0) elements in all stops before it packs them.
RUN(NAME gpu_metal_716 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_717 LABELS gfortran metal cuda EXTRA_ARGS --descriptor-index-64) # no llvm: the host relies on reallocation on assignment (needs --realloc-lhs-arrays)
RUN(NAME gpu_metal_718 FAIL LABELS metal cuda) # stops: the packed components need --descriptor-index-64 (not supported on Metal)
RUN(NAME gpu_metal_710 LABELS gfortran llvm metal cuda) # per-thread workspace slices of block local arrays
RUN(NAME gpu_metal_711 LABELS gfortran llvm metal cuda) # per-thread workspace slice declared at kernel scope
RUN(NAME gpu_metal_722 LABELS gfortran llvm metal cuda) # size/lbound/ubound of kind 8 of a dummy under max/min in a device routine (#16609)
RUN(NAME gpu_metal_723 FILE gpu_metal_722 LABELS gfortran llvm metal cuda EXTRA_ARGS --descriptor-index-64) # CUDA: long extents beside an int lower bound 1; Metal keeps int extents
# .eqv. and .neqv. in a kernel (lfortran/lfortran#16630).
RUN(NAME gpu_metal_730 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_reduction_overwrite_01 LABELS gfortran llvm metal cuda)
# Chunks of more iterations than a grid-stride kernel has threads.
RUN(NAME gpu_reduction_overwrite_01_chunks FILE gpu_reduction_overwrite_01 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=300000)
# An array defined whole by a full-extent section in each iteration is
# private to the iteration (lfortran/lfortran#17013).
RUN(NAME gpu_metal_731 LABELS gfortran llvm metal cuda)
# The same for arrays with bounds set on entry (automatic arrays).
RUN(NAME gpu_metal_732 LABELS gfortran llvm metal cuda)
# Section subscripts are evaluated before the element stores (#17018).
RUN(NAME gpu_metal_733 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_deferred_sync_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_deferred_sync_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_deferred_sync_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_deferred_sync_04 LABELS gfortran llvm metal cuda EXTRAFILES gpu_deferred_sync_04_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_deferred_sync_05 FAIL LABELS gfortran llvm metal cuda) # stops: a part of 4 fails the check
RUN(NAME gpu_deferred_sync_06 FAIL LABELS gfortran llvm metal cuda) # stops: a negative value
RUN(NAME gpu_deferred_sync_07 FAIL LABELS gfortran llvm metal cuda EXTRAFILES gpu_deferred_sync_07_mod.f90 EXTRA_ARGS --separate-compilation) # stops: a negative value
# A module of a library compiled without a device (lfortran/lfortran#17131).
RUN(NAME gpu_deferred_sync_08 LABELS gfortran llvm metal cuda STATIC_LIBRARY_FILES gpu_deferred_sync_08_mod.f90 HOST_STATIC_LIBRARY EXTRA_ARGS --separate-compilation)
# The same in the default mode, where the unit with the main program compiles
# the module's procedures, also for a file of external procedures.
RUN(NAME gpu_deferred_sync_09 LABELS gfortran llvm metal cuda STATIC_LIBRARY_FILES gpu_deferred_sync_09_mod.f90 HOST_STATIC_LIBRARY EXTRAFILES gpu_deferred_sync_09_ext.f90)
RUN(NAME gpu_ending_locals_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_ending_locals_02 LABELS gfortran llvm metal cuda EXTRAFILES gpu_ending_locals_02_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_partial_read_01 LABELS gfortran llvm metal cuda)
# The kernels of two files compiled separately (lfortran/lfortran#17143).
RUN(NAME gpu_kernel_name_01 LABELS gfortran llvm metal cuda EXTRAFILES gpu_kernel_name_01_ext.f90)
RUN(NAME gpu_kernel_name_02 LABELS gfortran llvm metal cuda EXTRAFILES gpu_kernel_name_02_a.f90 gpu_kernel_name_02_b.f90)
# Logical reductions (lfortran/lfortran#16725), in one launch and in many.
RUN(NAME gpu_metal_728 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_729 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=7)
# 64-bit kernel offsets in a launch that runs in chunks: every loop of
# gpu_metal_600, those over lower bounds beyond huge(0) included.
RUN(NAME gpu_metal_600_chunked FILE gpu_metal_600 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64 --gpu-chunk-limit=3)
RUN(NAME gpu_metal_614 LABELS gfortran llvm metal cuda EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_615 LABELS gfortran llvm metal cuda EXTRA_ARGS --descriptor-index-64 --realloc-lhs-arrays)
RUN(NAME gpu_metal_608 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # lower bounds above huge(0); metal declines integer(8) loop indices
RUN(NAME gpu_metal_616 LABELS gfortran llvm metal cuda EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_617 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_719 LABELS gfortran llvm metal cuda) # lower bounds beyond huge(0) without --descriptor-index-64
RUN(NAME gpu_metal_720 LABELS gfortran llvm cuda EXTRA_ARGS --descriptor-index-64) # metal declines integer(8) loop indices
RUN(NAME gpu_metal_721 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_511 LABELS llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0) # `local` locality is not accepted by every supported gfortran
RUN(NAME gpu_metal_514 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_525 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-split-min-iterations=0) # metal declines integer(8) loop indices
# Index-set splitting runs only for --gpu=cuda and cuda_cpu: the split nests
# keep the write-discard of the arrays the loops overwrite, and only those.
# The split tests run small domains, which only
# --gpu-split-min-iterations=0 splits.
RUN(NAME gpu_metal_527 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_528 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_529 LABELS gfortran llvm cuda)
RUN(NAME gpu_metal_524 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-allow-cpu-fallback)
# gpu_metal_526 reads a LOCAL_INIT scalar, which the GPU kernels leave
# uninitialized (#14792), so in both CUDA modes its results depend on what
# the device compiler makes of that; the CUDA kernel-source reference in
# tests/tests.toml checks the split instead. `local_init` is not accepted by
# every supported gfortran.
RUN(NAME gpu_metal_526 LABELS llvm)
# No metal or cuda label: a GPU kernel does not copy a LOCAL_INIT scalar in
# (#14792), and the device compiler folds tests on it as undefined.
RUN(NAME gpu_metal_513 LABELS llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=32768 --gpu-split-min-iterations=0) # `local` locality is not accepted by every supported gfortran
RUN(NAME gpu_metal_530 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_531 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_532 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_533 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_534 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_535 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_536 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_537 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
RUN(NAME gpu_metal_539 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0) # not checked on metal: a never-run loop over an allocatable component
RUN(NAME gpu_metal_538 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0) # not checked on metal: a never-run loop over an allocatable component
RUN(NAME gpu_metal_555 LABELS gfortran llvm cuda) # not checked on metal: a never-run loop over an allocatable component
RUN(NAME gpu_metal_556 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-cache-bytes=4096 --gpu-split-min-iterations=0)
# GFortran 13 cannot compile this LOCAL fixture. Both CUDA modes use GPU lowering
# and belongs here; ordinary LLVM is excluded for its pre-existing LOCAL
# preservation gap (#14622).
RUN(NAME gpu_local_preservation_01 LABELS metal cuda)
RUN(NAME gpu_metal_484 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_485 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_490 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_491 LABELS gfortran llvm cuda) # metal declines integer(8) loop indices
RUN(NAME gpu_tile_high_bounds_i4 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_tile_high_bounds_i8 LABELS gfortran llvm cuda EXTRA_ARGS --gpu-split-min-iterations=0) # metal declines integer(8) loop indices
RUN(NAME gpu_pointer_bound_01 LABELS gfortran llvm metal cuda)
# gfortran evaluates a `do concurrent` limit twice, so gpu_metal_369 has no
# gfortran label. The llvm backend and gfortran evaluate the limits of an
# inner index again for every value of the outer one, so gpu_metal_370 is for
# the GPU backends only.
RUN(NAME gpu_metal_369 LABELS llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_370 LABELS metal cuda EXTRA_ARGS --realloc-lhs-arrays)
# Expected run-time errors on the GPU backends only. gpu_metal_359 and
# gpu_metal_363 are GPU-only because the llvm backend still allocates array
# components in `t(i) = f(...)` without --realloc-lhs-arrays (#9738).
# gpu_metal_375 is GPU-only for the same reason as gpu_metal_363 (#9738).
RUN(NAME gpu_metal_375 FAIL NO_FAST LABELS metal cuda) # bounds checking reports a component written in both branches of an `if` that is not allocated without --realloc-lhs-arrays
RUN(NAME gpu_metal_359 FAIL NO_FAST LABELS metal cuda) # bounds checking reports a component that is not allocated without --realloc-lhs-arrays
RUN(NAME gpu_metal_363 FAIL NO_FAST LABELS metal cuda) # bounds checking reports a component an `if` lets the loop write that is not allocated without --realloc-lhs-arrays
RUN(NAME gpu_metal_364 FAIL NO_FAST NO_STD_F23 LABELS llvm metal cuda) # bounds checking reports a component the loop assigns an array to that is not allocated without --realloc-lhs-arrays; --std=f23 allocates it on assignment
RUN(NAME gpu_metal_377 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_377_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_385 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_385_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_395 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_395_mod.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME gpu_metal_396 LABELS gfortran llvm metal cuda EXTRA_ARGS --fast)
RUN(NAME gpu_metal_397 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_398 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_399 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_400 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_401 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_402 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_403 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_metal_404 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_405 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_603 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_604 FILE gpu_metal_405 LABELS llvm metal cuda
    EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_605 LABELS gfortran llvm metal cuda EXTRA_ARGS --descriptor-index-64)
RUN(NAME gpu_metal_606 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_metal_413 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_413_mod.f90 EXTRA_ARGS --separate-compilation --realloc-lhs-arrays)
RUN(NAME gpu_metal_435 LABELS gfortran llvm metal cuda EXTRAFILES gpu_metal_435_mod.f90 EXTRA_ARGS --separate-compilation $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME inline_scoped_01 LABELS gfortran llvm EXTRA_ARGS --fast)
RUN(NAME inline_function_calls_01 LABELS gfortran llvm EXTRA_ARGS --fast)

RUN(NAME gpu_decline_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_decline_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_decline_03 LABELS gfortran llvm EXTRAFILES gpu_decline_03_ext.f90)
RUN(NAME gpu_decline_04 LABELS gfortran llvm)
RUN(NAME gpu_decline_05 LABELS gfortran llvm)
RUN(NAME gpu_decline_06 LABELS gfortran llvm)
RUN(NAME gpu_decline_07 LABELS gfortran llvm)
RUN(NAME gpu_decline_08 LABELS gfortran llvm)
RUN(NAME gpu_decline_09 LABELS gfortran llvm)
RUN(NAME gpu_decline_10 LABELS gfortran llvm)
RUN(NAME gpu_decline_11 LABELS gfortran llvm)
RUN(NAME gpu_decline_12 LABELS gfortran llvm)
# No llvm label: without --gpu, LFortran computes a FORALL whose right-hand
# side reads a section bounded by the FORALL index wrongly (#12853).
RUN(NAME gpu_decline_13 LABELS gfortran)
RUN(NAME gpu_decline_14 LABELS gfortran llvm)
RUN(NAME gpu_decline_15 LABELS gfortran llvm)
RUN(NAME gpu_decline_16 LABELS gfortran llvm)
# GFortran 13 in Quick cannot compile these LOCAL locality fixtures.
RUN(NAME gpu_decline_17 LABELS llvm)
RUN(NAME gpu_decline_18 LABELS llvm)
RUN(NAME gpu_decline_19 LABELS llvm)
RUN(NAME gpu_decline_20 LABELS gfortran llvm)
RUN(NAME gpu_decline_21 LABELS gfortran) # plain LLVM cannot find a do concurrent by name
RUN(NAME gpu_decline_25 LABELS gfortran llvm)
RUN(NAME gpu_decline_26 LABELS gfortran llvm)
RUN(NAME gpu_decline_27 LABELS gfortran llvm)
RUN(NAME gpu_decline_28 LABELS gfortran llvm)
RUN(NAME gpu_decline_29 LABELS gfortran llvm)
RUN(NAME gpu_decline_30 LABELS gfortran llvm)
RUN(NAME gpu_decline_31 LABELS gfortran llvm)
RUN(NAME gpu_decline_34 LABELS gfortran llvm)
RUN(NAME gpu_decline_35 LABELS gfortran) # LFortran cannot compile the constant on the CPU yet (#15936)
RUN(NAME gpu_decline_36 LABELS gfortran llvm)
RUN(NAME gpu_decline_37 LABELS gfortran llvm)
RUN(NAME gpu_decline_38 LABELS gfortran llvm)
RUN(NAME gpu_decline_40 LABELS gfortran llvm)
RUN(NAME gpu_decline_41 LABELS gfortran llvm)
RUN(NAME gpu_decline_42 LABELS gfortran llvm)
RUN(NAME gpu_decline_43 LABELS gfortran llvm)
RUN(NAME gpu_decline_44 LABELS gfortran llvm)
RUN(NAME gpu_decline_45 LABELS gfortran llvm)
RUN(NAME gpu_decline_46 LABELS gfortran llvm)
RUN(NAME gpu_decline_50 LABELS gfortran llvm)
RUN(NAME gpu_decline_51 LABELS gfortran llvm)
RUN(NAME gpu_decline_52 LABELS gfortran llvm)

# One program per entry of the GPU unsupported list. Each runs on the CPU with
# --gpu-allow-cpu-fallback where its loop is on the list, and the error
# without the flag is kept by a reference test in tests/tests.toml.
RUN(NAME gpu_unsupported_01 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_unsupported_02 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_unsupported_03 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_unsupported_04 LABELS gfortran llvm metal cuda EXTRA_ARGS $<$<STREQUAL:${LFORTRAN_BACKEND},metal>:--gpu-allow-cpu-fallback>)
RUN(NAME gpu_unsupported_05 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_unsupported_06 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-allow-cpu-fallback)
RUN(NAME gpu_unsupported_07 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-allow-cpu-fallback)
RUN(NAME gpu_unsupported_08 LABELS gfortran llvm metal cuda)

RUN(NAME gpu_kernel_source_01 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_02 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_03 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_04 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_05 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_06 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_07 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_08 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_09 LABELS gfortran llvm)
RUN(NAME gpu_kernel_source_10 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_11 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_12 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_13 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_35 LABELS gfortran llvm metal cuda)
# GFortran 13 in Quick cannot compile these LOCAL locality fixtures.
RUN(NAME gpu_kernel_source_14 LABELS llvm metal cuda)
RUN(NAME gpu_kernel_source_16 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_15 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_30 LABELS gfortran llvm cuda)
RUN(NAME gpu_kernel_source_20 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_21 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-loop-transforms=fuse)
RUN(NAME gpu_kernel_source_22 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_17 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_18 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_23 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_24 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_25 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_19 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-cache-bytes=32768 --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_36 LABELS gfortran llvm cuda)
RUN(NAME gpu_kernel_source_37 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_38 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_39 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_40 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-split-min-iterations=0)
RUN(NAME gpu_kernel_source_41 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_kernel_source_42 LABELS gfortran llvm metal cuda EXTRA_ARGS --gpu-chunk-limit=50)
RUN(NAME gpu_kernel_source_43 LABELS gfortran llvm) # not run on a GPU: the arrays defined in part stay shared, a race there (lfortran/lfortran#15910)
RUN(NAME gpu_optional_launch_01 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_optional_launch_02 LABELS gfortran llvm metal cuda
    EXTRAFILES gpu_optional_launch_02_mod.f90 EXTRA_ARGS --separate-compilation --verify-all-passes)
RUN(NAME gpu_optional_launch_03 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_optional_launch_04 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_optional_launch_05 LABELS gfortran llvm metal cuda EXTRA_ARGS --verify-all-passes)
RUN(NAME gpu_liveout_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_05 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_02 LABELS gfortran llvm metal cuda c)
RUN(NAME gpu_liveout_04 LABELS gfortran llvm metal cuda c)
RUN(NAME gpu_derived_component_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_03 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_04 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_06 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_05 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_07 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_08 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_09 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_10 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_11 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_06 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_07 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_08 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_09 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_10 LABELS gfortran llvm cuda) # Metal compiles kernels with fast math, which assumes no NaN
RUN(NAME gpu_liveout_11 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_12 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_13 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_14 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_15 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_16 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_17 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_liveout_18 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_12 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_13 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_14 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_15 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_16 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_17 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_18 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_derived_component_19 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_derived_component_20 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_derived_component_21 LABELS gfortran llvm metal cuda EXTRA_ARGS --realloc-lhs-arrays)
RUN(NAME gpu_unroll_runtime_start_01 LABELS gfortran llvm metal cuda)
# No llvm label yet: the host code generator leaves a DO variable at its last
# value instead of one step past it (#12294), which Step 3 of #16398 fixes.
RUN(NAME gpu_do_loop_01 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_do_loop_02 LABELS gfortran llvm metal cuda)
RUN(NAME gpu_do_loop_03 LABELS gfortran llvm metal cuda EXTRA_ARGS --fast)
RUN(NAME gpu_reduction_strided_01 LABELS llvm metal cuda) # gfortran on CI lacks the reduce clause

RUN(NAME real128_arith_01 LABELS gfortran llvm)
RUN(NAME real128_arith_02 LABELS gfortran llvm)
RUN(NAME real128_arith_03 LABELS gfortran llvm)
RUN(NAME real128_arith_04 LABELS gfortran llvm)
RUN(NAME real128_arith_05 LABELS gfortran llvm)
RUN(NAME real128_arith_06 LABELS gfortran llvm)
RUN(NAME real128_arith_07 LABELS gfortran)
RUN(NAME real128_arith_08 LABELS gfortran llvm)
RUN(NAME real128_arith_09 LABELS gfortran llvm)
RUN(NAME real128_arith_10 LABELS gfortran llvm)
RUN(NAME real128_arith_11 LABELS gfortran llvm)
RUN(NAME real128_arith_12 LABELS gfortran llvm)
RUN(NAME real128_cast_01 LABELS gfortran llvm EXTRAFILES real128_cast_01_mod.f90)
RUN(NAME real128_cast_02 LABELS gfortran llvm)
RUN(NAME real128_cast_03 LABELS gfortran llvm EXTRAFILES real128_cast_03_mod.f90)
RUN(NAME real128_cast_04 LABELS gfortran llvm)
RUN(NAME real128_compare_01 LABELS gfortran llvm)
RUN(NAME real128_int_to_real_01 LABELS gfortran llvm)
RUN(NAME real128_int_to_real_02 LABELS gfortran llvm)
RUN(NAME real128_int_to_real_03 LABELS gfortran llvm)
RUN(NAME real128_intrinsic_inquiry_01 LABELS gfortran llvm)
RUN(NAME real128_intrinsic_math_01 LABELS gfortran llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME real128_intrinsic_math_02 LABELS llvm llvm_wasm llvm_wasm_emcc)
RUN(NAME real128_intrinsic_math_03 LABELS llvm llvm_wasm llvm_wasm_emcc NO_STD_F23) # exp2 is an LFortran extension, an external procedure with --std=f23
RUN(NAME real128_intrinsic_real_01 LABELS gfortran llvm)
RUN(NAME real128_intrinsic_real_02 LABELS gfortran llvm NO_FAST_MATH) # real(8) overflow to +Infinity; --fast sets no-infs (#15792)
RUN(NAME real128_intrinsic_sqrt_01 LABELS gfortran llvm)
RUN(NAME real128_literal_01 LABELS gfortran llvm)
RUN(NAME real128_literal_02 LABELS gfortran llvm)
RUN(NAME real128_module_01 LABELS gfortran llvm EXTRAFILES real128_module_01_mod.f90)
# real(10) tests run only where the runtime is known to read the kind 10
# storage type of the generated code (x86-64 Linux, Apple arm64); on Windows and
# aarch64 Linux the two disagree: https://github.com/lfortran/lfortran/issues/13935
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
    RUN(NAME real80_cast_01 LABELS gfortran llvm)
    RUN(NAME real80_compare_01 LABELS gfortran llvm)
    RUN(NAME real80_int_to_real_01 LABELS gfortran llvm)
    RUN(NAME real80_unary_minus_01 LABELS gfortran llvm)
    RUN(NAME real_star_02 LABELS gfortran llvm EXTRA_ARGS --implicit-typing)
    RUN(NAME real80_literal_01 LABELS gfortran llvm)
    RUN(NAME real80_print_01 LABELS gfortran llvm)
    # The value check waits on #17031.
    RUN(NAME separate_compilation_73 LABELS gfortran llvm
        EXTRAFILES separate_compilation_73a.f90) # real(10) constant round-trip through a mod file (#17032)
elseif (APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|aarch64")
    # GFortran has no real(10) on arm64. real80_int_to_real_01 is left out
    # because it needs more than double precision, which real(10) constants
    # do not have on arm64.
    RUN(NAME real80_cast_01 LABELS llvm)
    RUN(NAME real80_compare_01 LABELS llvm)
    RUN(NAME real80_unary_minus_01 LABELS llvm)
    RUN(NAME real_star_02 LABELS llvm EXTRA_ARGS --implicit-typing)
    RUN(NAME real80_literal_01 LABELS llvm)
    RUN(NAME real80_print_01 LABELS llvm)
endif()
RUN(NAME equivalence_39 LABELS gfortran llvm)
RUN(NAME equivalence_40 LABELS gfortran llvm)
RUN(NAME equivalence_41 LABELS gfortran llvm)
RUN(NAME equivalence_42 LABELS gfortran llvm)
RUN(NAME equivalence_43 LABELS gfortran llvm)
RUN(NAME equivalence_44 LABELS gfortran llvm)
RUN(NAME equivalence_45 LABELS gfortran llvm)
RUN(NAME equivalence_46 LABELS gfortran llvm)
RUN(NAME equivalence_47 LABELS gfortran llvm)
RUN(NAME equivalence_48 LABELS gfortran llvm)
RUN(NAME equivalence_49 LABELS gfortran llvm EXTRAFILES equivalence_49_module.f90 EXTRA_ARGS --separate-compilation)
RUN(NAME equivalence_50 LABELS gfortran llvm) # operands storage associated with the target (#16215)
RUN(NAME get_environment_variable_01 LABELS gfortran llvm)
RUN(NAME allocatable_scalar_assign_01 LABELS gfortran llvm)
RUN(NAME allocatable_function_result_01 LABELS gfortran llvm)
RUN(NAME allocatable_function_result_02 LABELS gfortran llvm)
RUN(NAME allocatable_function_result_03 LABELS gfortran llvm)
RUN(NAME allocatable_function_result_04 LABELS gfortran llvm)
RUN(NAME derived_type_constructor_scope_01 LABELS gfortran llvm)
RUN(NAME struct_tbp_codegen LABELS gfortran llvm c)
RUN(NAME decl_order_01 LABELS gfortran llvm)
RUN(NAME decl_order_02 LABELS gfortran llvm)
RUN(NAME all_01 LABELS gfortran llvm)

RUN(NAME preprocessor_define_equals LABELS gfortran llvm EXTRA_ARGS --cpp GFORTRAN_ARGS -cpp)
RUN(NAME runtime_checks_01 LABELS gfortran llvm)
RUN(NAME detect_leaks_01 LABELS gfortran llvm EXTRA_ARGS --detect-leaks)
# lfortran_display is an LFortran runtime module that GFortran does not have.
# Its procedures do not link with --separate-compilation yet (#15852).
RUN(NAME display_data_01 LABELS llvm NO_LLVM_GOC)

if (LFORTRAN_SMOKE)
    get_property(smoke_tests DIRECTORY PROPERTY TESTS)
    list(LENGTH smoke_tests smoke_count)
    if (smoke_count EQUAL 0)
        message(FATAL_ERROR "No smoke tests selected for backend: ${LFORTRAN_BACKEND}")
    endif()
    message(STATUS "Selected ${smoke_count} smoke tests for ${LFORTRAN_BACKEND}")
endif()

foreach(name IN LISTS LFORTRAN_EXCLUDE_TESTS)
    if (NOT name IN_LIST LFORTRAN_REGISTERED_TESTS)
        message(FATAL_ERROR "Excluded test is not registered: '${name}'")
    endif()
endforeach()
