No longer generate calls to *_finite
authorserge-sans-paille <sguelton@redhat.com>
Fri, 21 Feb 2020 14:51:19 +0000 (15:51 +0100)
committerserge-sans-paille <sguelton@redhat.com>
Fri, 28 Feb 2020 09:07:37 +0000 (10:07 +0100)
commit6d15c4deab51498b70825fb6cefbbfe8f3d9bdcf
treeab2c6c23549368204f62896deb35cbd810a14cbe
parent01f9abbb50b11dd26b9ccb7cb565cc955d2b9c74
No longer generate calls to *_finite

According to Joseph Myers, a libm maintainer

> They were only ever an ABI (selected by use of -ffinite-math-only or
> options implying it, which resulted in the headers using "asm" to redirect
> calls to some libm functions), not an API. The change means that ABI has
> turned into compat symbols (only available for existing binaries, not for
> anything newly linked, not included in static libm at all, not included in
> shared libm for future glibc ports such as RV32), so, yes, in any case
> where tools generate direct calls to those functions (rather than just
> following the "asm" annotations on function declarations in the headers),
> they need to stop doing so.

As a consequence, we should no longer assume these symbols are available on the
target system.

Still keep the TargetLibraryInfo for constant folding.

Differential Revision: https://reviews.llvm.org/D74712
llvm/lib/Analysis/TargetLibraryInfo.cpp
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
llvm/test/CodeGen/AArch64/illegal-float-ops.ll
llvm/test/CodeGen/X86/finite-libcalls.ll