-
Notifications
You must be signed in to change notification settings - Fork 14.9k
Open
Labels
Description
program use_sinh
implicit none
real :: x
x = 0.5
!$omp target map(x)
x = sinh(x)
!$omp end target
print *, x
end program
$ flang -fdefault-real-8 -fopenmp --offload-arch=gfx90a use_sinh.f90
ld.lld: error: undefined symbol: sinh
>>> referenced by /tmp/a.out.amdgcn.gfx90a-1b4acf.img.lto.o:(__omp_offloading_eeba6730_c800bec3__QQmain_l5)
>>> referenced by /tmp/a.out.amdgcn.gfx90a-1b4acf.img.lto.o:(__omp_offloading_eeba6730_c800bec3__QQmain_l5)
clang: error: ld.lld command failed with exit code 1 (use -v to see invocation)
/pfs/lustrep1/scratch/project_462000700/vimaylis/llvm/install_20251009/bin/clang-linker-wrapper: error: 'clang' failed
flang-22: error: linker command failed with exit code 1 (use -v to see invocation)
There used to be a stub for a double precision sinh in libm, but this has since been removed, breaking sinh.
I noticed that cosh still works and that flang treats it a bit differently from sinh. For cosh a call to ROCDL is generated instead of a libm call. Changing sinh to work like cosh in this regard fixes the problem. I have a patch for this.