73b193aec2
Add a header-only implementation of Briggs & Torczon's fast small integer set data structure to flang/include/flang/Common, and use it in the runtime to manage a pool of Fortran unit numbers with recycling. This replaces the bit set previously used for that purpose. The set is initialized on demand with the negations of all the NEWUNIT= unit numbers that can be returned to any kind of integer variable. For programs that require more concurrently open NEWUNIT= unit numbers than the pool can hold, they are now allocated with a non-recycling counter. This allows as many open units as the operating system provides. Many of the top-line comments in flang/unittests/Runtime had the wrong path name. I noticed this while adding a unit test for the fast integer set data structure, and cleaned them up. Differential Revision: https://reviews.llvm.org/D120685
45 lines
1.1 KiB
CMake
45 lines
1.1 KiB
CMake
add_custom_target(FlangUnitTests)
|
|
set_target_properties(FlangUnitTests PROPERTIES FOLDER "Flang Unit Tests")
|
|
|
|
function(add_flang_unittest test_dirname)
|
|
add_unittest(FlangUnitTests ${test_dirname} ${ARGN})
|
|
endfunction()
|
|
|
|
if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
|
|
add_compile_options("-Wno-suggest-override")
|
|
endif()
|
|
|
|
function(add_flang_nongtest_unittest test_name)
|
|
cmake_parse_arguments(ARG
|
|
"SLOW_TEST"
|
|
""
|
|
""
|
|
${ARGN})
|
|
|
|
if(ARG_SLOW_TEST)
|
|
set(suffix .slow)
|
|
else()
|
|
set(suffix .test)
|
|
endif()
|
|
|
|
add_executable(${test_name}${suffix} ${test_name}.cpp)
|
|
|
|
if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
|
|
set(llvm_libs LLVM)
|
|
else()
|
|
llvm_map_components_to_libnames(llvm_libs Support)
|
|
endif()
|
|
target_link_libraries(${test_name}${suffix} ${llvm_libs} ${ARG_UNPARSED_ARGUMENTS})
|
|
|
|
if(NOT ARG_SLOW_TEST)
|
|
add_dependencies(FlangUnitTests ${test_name}${suffix})
|
|
endif()
|
|
endfunction()
|
|
|
|
add_subdirectory(Optimizer)
|
|
add_subdirectory(Common)
|
|
add_subdirectory(Decimal)
|
|
add_subdirectory(Evaluate)
|
|
add_subdirectory(Runtime)
|
|
add_subdirectory(Frontend)
|