llvm / llvm/llvm-project

Extended double precision support in flang

Open
#189,945 5 comments 0 reactions 0 assignees View on GitHub
flang
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

The flang compiler allows compiling Fortran code which uses extended double precision intrinsic functions, like `abs`. However when linking with the flang runtime library, the required symbols are not available.

Tested on package https://github.com/fortran-lang/test-drive v0.6.0 with flang 21.1.8 from conda-forge on Windows.

````
LINK: command "D:\bld\test-drive-pkg_1775033357038\_build_env\Library\bin\lld-link.exe /nologo test\CMakeFiles\test-drive-tester.dir\main.f90.obj test\CMakeFiles\test-drive-tester.dir\test_check.F90.obj test\CMakeFiles\test-drive-tester.dir\test_select.F90.obj /out:test\test-drive-tester.exe /implib:test\test-drive-tester.lib /pdb:test-drive-tester.exe.dbg /version:0.0 /machine:x64 -Wl,-defaultlib:D:/bld/test-drive-pkg_1775033357038/_build_env/lib/clang/21/lib/windows/clang_rt.builtins-x86_64.lib /INCREMENTAL:NO /subsystem:console test-drive.lib -libpath:D:/bld/test-drive-pkg_1775033357038/_build_env/Library/lib/clang/21/lib/windows -libpath:D:/bld/test-drive-pkg_1775033357038/_build_env/Library/lib -libpath:D:/bld/test-drive-pkg_1775033357038/_build_env/Library/lib/clang/21/lib/x86_64-pc-windows-msvc /MANIFEST:EMBED,ID=1" failed (exit code 1) with the following output:
lld-link: warning: ignoring unknown argument '-Wl,-defaultlib:D:/bld/test-drive-pkg_1775033357038/_build_env/lib/clang/21/lib/windows/clang_rt.builtins-x86_64.lib'

lld-link: error: undefined symbol: __extendxftf2
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced 12 more times

lld-link: error: undefined symbol: __trunctfxf2
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_float_xdp)
>>> referenced 7 more times

lld-link: error: undefined symbol: _FortranACAbsF128
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_complex_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_complex_xdp)
>>> referenced by test-drive.lib(testdrive.F90.obj):(_QMtestdrivePcheck_complex_xdp)
>>> referenced 2 more times
````

````
conda list flang
flang: 21.1.8-h1b5488d_0 conda-forge
flang-rt_win-64: 21.1.8-h57928b3_0 conda-forge
flang_impl_win-64: 21.1.8-h719f0c7_0 conda-forge
flang_win-64: 21.1.8-h719f0c7_0 conda-forge
````

````
conda info
active environment : base
active env location : D:\Miniforge
shell level : 1
user config file : C:\Users\VssAdministrator\.condarc
populated config files : D:\Miniforge\.condarc
D:\Miniforge\condarc.d\anaconda-auth.yml
C:\Users\VssAdministrator\.condarc
conda version : 26.1.1
conda-build version : 26.3.0
python version : 3.12.13.final.0
solver : libmamba (default)
virtual packages : __archspec=1=x86_64_v3
__conda=26.1.1=0
__win=10.0.20348=0
base environment : D:\Miniforge (writable)
conda av data dir : D:\Miniforge\etc\conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/win-64
https://conda.anaconda.org/conda-forge/noarch
package cache : D:\Miniforge\pkgs
C:\Users\VssAdministrator\.conda\pkgs
C:\Users\VssAdministrator\AppData\Local\conda\conda\pkgs
envs directories : D:\Miniforge\envs
C:\Users\VssAdministrator\.conda\envs
C:\Users\VssAdministrator\AppData\Local\conda\conda\envs
temporary directory : C:\Users\VSSADM~1\AppData\Local\Temp
platform : win-64
user-agent : conda/26.1.1 requests/2.33.1 CPython/3.12.13 Windows/2022Server Windows/10.0.20348 solver/libmamba conda-libmamba-solver/25.11.0 libmambapy/2.5.0
administrator : True
netrc file : None
offline mode : False
````

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.