aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2024-10-03 19:46:59 +0200
committerEric Botcazou <ebotcazou@adacore.com>2024-10-03 20:02:27 +0200
commit547219f41f049083cda55929ae1c900195993504 (patch)
treeb1857874f64ce355288ce426ac9678f5769e20bd
parentfe33530e6241712c42feeb2a649c1e8b2f2cb406 (diff)
downloadgcc-547219f41f049083cda55929ae1c900195993504.zip
gcc-547219f41f049083cda55929ae1c900195993504.tar.gz
gcc-547219f41f049083cda55929ae1c900195993504.tar.bz2
Aarch64: Define WIDEST_HARDWARE_FP_SIZE
The macro is documented like this in the internal manual: -- Macro: WIDEST_HARDWARE_FP_SIZE A C expression for the size in bits of the widest floating-point format supported by the hardware. If you define this macro, you must specify a value less than or equal to mode precision of the mode used for C type 'long double' (from hook 'targetm.c.mode_for_floating_type' with argument 'TI_LONG_DOUBLE_TYPE'). If you do not define this macro, mode precision of the mode used for C type 'long double' is the default. AArch64 uses 128-bit TFmode for long double but, as far as I know, no FPU implemented in hardware supports it. gcc/ * config/aarch64/aarch64.h (WIDEST_HARDWARE_FP_SIZE): Define to 64. gcc/testsuite/ * gnat.dg/specs/size_clause6.ads: New test.
-rw-r--r--gcc/config/aarch64/aarch64.h2
-rw-r--r--gcc/testsuite/gnat.dg/specs/size_clause6.ads12
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index ec8fde7..030cffb 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -96,6 +96,8 @@
#define LONG_LONG_TYPE_SIZE 64
+#define WIDEST_HARDWARE_FP_SIZE 64
+
/* This value is the amount of bytes a caller is allowed to drop the stack
before probing has to be done for stack clash protection. */
#define STACK_CLASH_CALLER_GUARD 1024
diff --git a/gcc/testsuite/gnat.dg/specs/size_clause6.ads b/gcc/testsuite/gnat.dg/specs/size_clause6.ads
new file mode 100644
index 0000000..6015bcd
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/specs/size_clause6.ads
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+
+with Interfaces;
+
+package Size_Clause6 is
+
+ type Long_Double is new Interfaces.IEEE_Extended_Float;
+ for Long_Double'Size use 128; -- { dg-warning "unused" "" { target { ! { { i?86-*-* x86_64-*-* } && lp64 } } } }
+
+ function Int (X : in Long_Double) return Integer is (0);
+
+end Size_Clause6;