[PATCH] D129231: [Builtins] Do not claim all libfuncs are readnone with trapping math.

Florian Hahn via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 11 09:40:21 PDT 2022


fhahn added a comment.

In D129231#3716363 <https://reviews.llvm.org/D129231#3716363>, @scanon wrote:

>>> Looking at implementations of these functions, it looks like GNU libm doesn't raise inexact, but the bionic libm does. I think I'm leaning towards marking all of them as "fng" as it's the more cautious of the two.
>>
>> Hmm, bionic's behavior sounds a bit surprising. In the committed version, I kept them fnc to keep the previous behavior for now. I'll double-check with @scanon and potentially upload a follow-up patch.
>
> As noted, this is only clarified in C23. Previous C standards did not specify whether or not these functions should set inexact, leading to some implementations choosing one behavior and others choosing the other. That said, the TS that clarified the behavior has been available for about a decade, so I'm mildly surprised that Bionic kept their existing behavior for so long.

Hm, I think making this depend on the C standard version would be rather tricky, as I don't think there's precedence for that at the moment. For ceil/round it won't matter in practice, because we will lower them to the constrained intrinsics.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129231/new/

https://reviews.llvm.org/D129231



More information about the cfe-commits mailing list