From: Antoni Boucher <[email protected]>

gcc/jit/ChangeLog:

        * jit-recording.cc: Get correct size for long double.

gcc/testsuite/ChangeLog:

        * jit.dg/test-types.c: Test get_size for long double.
---
 gcc/jit/jit-recording.cc          | 6 +++---
 gcc/testsuite/jit.dg/test-types.c | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/gcc/jit/jit-recording.cc b/gcc/jit/jit-recording.cc
index 2f4ecc31825..9636615f41a 100644
--- a/gcc/jit/jit-recording.cc
+++ b/gcc/jit/jit-recording.cc
@@ -2620,7 +2620,7 @@ recording::memento_of_get_type::get_size ()
       break;
     case GCC_JIT_TYPE_FLOAT:
       m = targetm.c.mode_for_floating_type (TI_FLOAT_TYPE);
-      size = GET_MODE_PRECISION (m).to_constant ();
+      size = GET_MODE_UNIT_SIZE (m) * BITS_PER_UNIT;
       break;
 #ifdef HAVE_BFmode
     case GCC_JIT_TYPE_BFLOAT16:
@@ -2628,11 +2628,11 @@ recording::memento_of_get_type::get_size ()
 #endif
     case GCC_JIT_TYPE_DOUBLE:
       m = targetm.c.mode_for_floating_type (TI_DOUBLE_TYPE);
-      size = GET_MODE_PRECISION (m).to_constant ();
+      size = GET_MODE_UNIT_SIZE (m) * BITS_PER_UNIT;
       break;
     case GCC_JIT_TYPE_LONG_DOUBLE:
       m = targetm.c.mode_for_floating_type (TI_LONG_DOUBLE_TYPE);
-      size = GET_MODE_PRECISION (m).to_constant ();
+      size = GET_MODE_UNIT_SIZE (m) * BITS_PER_UNIT;
       break;
     case GCC_JIT_TYPE_SIZE_T:
       size = MAX_BITS_PER_WORD;
diff --git a/gcc/testsuite/jit.dg/test-types.c b/gcc/testsuite/jit.dg/test-types.c
index 8573711cf8e..add08fad7b9 100644
--- a/gcc/testsuite/jit.dg/test-types.c
+++ b/gcc/testsuite/jit.dg/test-types.c
@@ -493,6 +493,7 @@ verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
 
   CHECK_VALUE (gcc_jit_type_get_size (gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_FLOAT)), sizeof (float));
   CHECK_VALUE (gcc_jit_type_get_size (gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_DOUBLE)), sizeof (double));
+  CHECK_VALUE (gcc_jit_type_get_size (gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_LONG_DOUBLE)), sizeof (long double));
 #ifdef HAVE_BFmode
   CHECK_VALUE (gcc_jit_type_get_size (gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_BFLOAT16)), sizeof (__bfloat16));
 #endif

Reply via email to