On 13.03.2025 13:22, Martin Storsjö wrote:
On Thu, 13 Mar 2025, Jacek Caban wrote:
On 12.03.2025 13:45, Martin Storsjö wrote:
On Wed, 12 Mar 2025, Jacek Caban wrote:
These files are already in a target-specific directory, and it's
the build
system's job to include them only for applicable targets.
This also allows their use for ARM64EC.
---
mingw-w64-crt/math/arm-common/acoshl.c | 4 ----
mingw-w64-crt/math/arm-common/asinhl.c | 4 ----
mingw-w64-crt/math/arm-common/atanhl.c | 4 ----
mingw-w64-crt/math/arm-common/expm1l.c | 4 ----
mingw-w64-crt/math/arm-common/ilogbl.c | 4 ----
mingw-w64-crt/math/arm-common/ldexpl.c | 4 ----
mingw-w64-crt/math/arm-common/log1pl.c | 4 ----
mingw-w64-crt/math/arm-common/log2.c | 4 ----
mingw-w64-crt/math/arm-common/logbl.c | 4 ----
mingw-w64-crt/math/arm-common/powl.c | 4 ----
mingw-w64-crt/math/arm-common/remainderl.c | 4 ----
mingw-w64-crt/math/arm-common/remquol.c | 4 ----
mingw-w64-crt/math/arm-common/scalbn.c | 8 --------
13 files changed, 56 deletions(-)
diff --git a/mingw-w64-crt/math/arm-common/acoshl.c
b/mingw-w64-crt/math/arm-common/acoshl.c
index c2157bebc..451926e3b 100644
--- a/mingw-w64-crt/math/arm-common/acoshl.c
+++ b/mingw-w64-crt/math/arm-common/acoshl.c
@@ -8,9 +8,5 @@
long double acoshl(long double x)
{
-#if defined(__arm__) || defined(_ARM_) || defined(__aarch64__) ||
defined(_ARM64_)
return acosh(x);
-#else
-#error Not supported on your platform yet
-#endif
}
While we are in an architecture specific directory, this kind of
#error is somewhat nice to make sure one doesn't accidentally use
this kind of code if we're building it in an unexpected
configuration. (To be honest, there's a huge number of various
scattered math functions, and if building in various test
configuratons it's not very easy to make sure that all functions
really are covered.)
But for arm64ec, we could change these ifdefs into "#if
__SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__" then we should pick the
same existing codepath for now. (And if the arm64ec environment gets
80 bit long doubles in the future, it should make it clear that
these codepaths no longer are suitable as such.)
What do you think?
Sorry, but I don’t agree. This approach complicates things for
questionable reasons. In general, it’s better to keep things simple
and avoid duplicating logic. In this case, the logic is already in
Makefile.am, where it’s easy to adjust and maintain. The #if checks
just duplicate that logic and obscure the code. Instead of having
everything in one place, the logic gets scattered across multiple files.
It’s also inconsistent. Some files in arm-common have these checks,
while others don’t. Should we add them to every single file? Should
we then add similar checks to every .c file in the tree to verify the
architecture, forcing anyone porting to a new architecture to go
through them all?
ARM64EC is a good example of why these checks are counterproductive.
The code is already clean, simple, and portable. It doesn’t require
any functional changes. Yet, these unnecessary checks force
revisiting every affected file.
The hypothetical ARM64EC 80-bit long double support is another
counterexample. If someone adds support for it to the compiler, the
existing mingw-w64-crt could still work out of the box using implicit
casts. Of course, for full support one would need to improve the
precision, but for that `git grep "long double" -- math/arm-common/`
seems easy enough.
Ok, fair enough - I guess these are reasonable arguments. No further
objection to this patch then!
Pushed, thanks!
Jacek
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public