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!
// Martin
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public