Re: Please revert b2e843161d
Steve Kargl <[email protected]> Thu, 25 Jun 2026 15:32:15 -0700
| Newsgroups | gmane.os.freebsd.devel.hackers |
|---|---|
| Message-ID | <[email protected]> |
On 6/25/26 10:57, Andrew Turner wrote: > > >> On 25 Jun 2026, at 17:42, Steve Kargl <[email protected]> wrote: >> >> On 6/25/26 01:15, Andrew Turner wrote: >>>> On 24 Jun 2026, at 19:58, Steve Kargl <[email protected]> wrote: >>>> >>>> Can someone with commit access please revert b2e843161dc3b? >>>> >>>> git log -r b2e843161dc3b79777e873183447c92ed9c3703a >>>> Author: Andrew Turner <[email protected]> >>>> Date: Tue Nov 2 11:31:17 2021 +0000 >>>> >>>> Use a builtin where possible in msun >>>> >>>> >>>> If one has a libm built with, e.g., -DUSE_BUILTIN_FMAF, >>>> and then tries to debug code that uses fmaf() where the >>>> compiler options include -fno-builtin, a segfault >>>> occurs. I suggest purging all of the recent additions >>>> of USE_BUILTIN_*. These are simply not needed as a compiler >>>> will use a builtin (if available) instead of a function from >>>> libm. >>> What architecture and compiler are you using to build libm? >>> I only enabled it on arm64 as both llvm and gcc will generate the >>> optimal assembly instruction. Other architectures and compilers the >>> builtin may generate a call to fmaf creating an infinite loop. >> >> I'm using >> >> % uname -a >> FreeBSD hotrats 16.0-CURRENT FreeBSD 16.0-CURRENT #0 main-n284956- >> de9fe28ab847: Fri Apr 10 10:15:09 PDT 2026 kargl@hotrats:/usr/obj/usr/ >> src/amd64.amd64/sys/GENERIC amd64 > > I don’t expect it to work on amd64 in the general case. Godbolt shows > both GCC and Clang generating an infinite loop jumping to its self [1]. > It may work on some architecture levels, however I don’t know enough > about amd64 to know if it’s safe to enable. Just checked godbolt. If one uses -O3 -fno-builtin with either gcc or clang, the generate assembly includes a call to fmaf in libm.a. If you build libm with -DUSE_BUILTIN_FMAF on arm and you use -fno-builtin, does the resulting executable seg fault? -- steve