| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Flang/Flang-RT] Fix OldUnit tests on Windows (#150734) Flang and Flang-RT have two flavours of unittests: 1. GTest unittests, using lit's lit.formats.GoogleTest format ending with Tests${CMAKE_EXECUTABLE_SUFFIX} 2. "non-GTest" or "OldUnit" unittests, a plain executable ending with .test${CMAKE_EXECUTABLE_SUFFIX} Both executables are emitted into the same unittests/ subdirectory. When running ... 1. tests/Unit/lit.cfg.py, only considers executable ending with Tests (or Tests.exe on Windows), hence skips the non-GTest tests. 2. tests/NonGtestUnit/lit.cfg.py considers all tests ending with .test or .exe. On Windows, The GTest unitests also end with .exe. In Flang-RT, .exe is considered an extension for non-GTest unitests which causes tests such as Flang's RuntimeTests.exe to be executed for both on Windows. This particular test includes a file write test, using a hard-coded filename ucsfile. If the two instances are executed concurrently, they might interfere with each other reading/writing ucsfile which results in a flaky test. This patch avoids the redundant execution by requiring the suffix .test.exe on Windows. lit has to be modified because it uses os.path.splitext the extract the extension, which would only recognize the last component. It was changed from the orginal endswith in c865abe747aa72192f02ebfdcabe730f2553e42f for unknown reasons. In Flang, .exe is not considered a suffix for non-GTest unittests and hence they are not run at all. Fixing by also added .test.exe as valid suffix, like with Flang-RT. Unfortunately, the Evaluate/real.test.exe test was failing on Windows: FAIL: flang-OldUnit :: Evaluate/real.test.exe (3592 of 3592) ******************** TEST 'flang-OldUnit :: Evaluate/real.test.exe' FAILED ******************** ..\_src\flang\unittests\Evaluate\real.cpp:511: FAIL: FlagsToBits(prod.flags) == 0x18, not 0x10 0 0x800001 * 0xbf7ffffe ..\_src\flang\unittests\Evaluate\real.cpp:511: FAIL: FlagsToBits(prod.flags) == 0x18, not 0x10 0 0x800001 * 0x3f7ffffe ..\_src\flang\unittests\Evaluate\real.cpp:511: FAIL: FlagsToBits(prod.flags) == 0x18, not 0x10 0 0x80800001 * 0xbf7ffffe ..\_src\flang\unittests\Evaluate\real.cpp:511: FAIL: FlagsToBits(prod.flags) == 0x18, not 0x10 0 0x80800001 * 0x3f7ffffe ... This is due to the __x86_64__ macro not being set by Microsoft's cl.exe and hence floating point status flags not being read out. The equivalent macro for Microsofts compiler is _M_X64 (or _M_X64). | 1 年前 | |
[Flang] LLVM_ENABLE_RUNTIMES=flang-rt (#110217) Extract Flang's runtime library to use the LLVM_ENABLE_RUNTIME mechanism. It will only become active when LLVM_ENABLE_RUNTIMES=flang-rt is used, which also changes the FLANG_INCLUDE_RUNTIME to OFF so the old runtime build rules do not conflict. This also means that unless LLVM_ENABLE_RUNTIMES=flang-rt is passed, nothing changes with the current build process. Motivation: * Consistency with LLVM's other runtime libraries (compiler-rt, libc, libcxx, openmp offload, ...) * Allows compiling the runtime for multiple targets at once using the LLVM_RUNTIME_TARGETS configuration options * Installs the runtime into the compiler's per-target resource directory so it can be automatically found even when cross-compiling Also see RFC discussion at https://discourse.llvm.org/t/rfc-use-llvm-enable-runtimes-for-flangs-runtime/80826 | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 年前 |