aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2024-06-06 19:27:56 +0100
committerGaius Mulley <gaiusmod2@gmail.com>2024-06-06 19:27:56 +0100
commit30ce9dfcc665b6088e5898cfa766b57556ebb90e (patch)
treed9cdbb93dea407083ea8eb48e2036358717e2972
parent366d45c8d4911dc7874d2e64cf2583c0133b8dd5 (diff)
downloadgcc-30ce9dfcc665b6088e5898cfa766b57556ebb90e.zip
gcc-30ce9dfcc665b6088e5898cfa766b57556ebb90e.tar.gz
gcc-30ce9dfcc665b6088e5898cfa766b57556ebb90e.tar.bz2
modula2: Simplify REAL/LONGREAL/SHORTREAL node creation.
This patch simplifies the real type build functions by using the default float_type_node, double_type_node rather than create new nodes. It also uses the default GCC long_double_type_node or float128_type_nodes for longreal. gcc/m2/ChangeLog: * gm2-gcc/m2type.cc (build_m2_short_real_node): Rewrite to use the default float_type_node. (build_m2_real_node): Rewrite to use the default double_type_node. (build_m2_long_real_node): Rewrite to use the default long_double_type_node or float128_type_node. Co-Authored-By: Kewen.Lin <linkw@linux.ibm.com> Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
-rw-r--r--gcc/m2/gm2-gcc/m2type.cc30
1 files changed, 7 insertions, 23 deletions
diff --git a/gcc/m2/gm2-gcc/m2type.cc b/gcc/m2/gm2-gcc/m2type.cc
index 571923c..5773a5c 100644
--- a/gcc/m2/gm2-gcc/m2type.cc
+++ b/gcc/m2/gm2-gcc/m2type.cc
@@ -1415,45 +1415,29 @@ build_m2_char_node (void)
static tree
build_m2_short_real_node (void)
{
- tree c;
-
- /* Define `REAL'. */
-
- c = make_node (REAL_TYPE);
- TYPE_PRECISION (c) = FLOAT_TYPE_SIZE;
- layout_type (c);
- return c;
+ /* Define `SHORTREAL'. */
+ ASSERT_CONDITION (TYPE_PRECISION (float_type_node) == FLOAT_TYPE_SIZE);
+ return float_type_node;
}
static tree
build_m2_real_node (void)
{
- tree c;
-
/* Define `REAL'. */
-
- c = make_node (REAL_TYPE);
- TYPE_PRECISION (c) = DOUBLE_TYPE_SIZE;
- layout_type (c);
- return c;
+ ASSERT_CONDITION (TYPE_PRECISION (double_type_node) == DOUBLE_TYPE_SIZE);
+ return double_type_node;
}
static tree
build_m2_long_real_node (void)
{
tree longreal;
-
+
/* Define `LONGREAL'. */
- if (M2Options_GetIBMLongDouble ())
- {
- longreal = make_node (REAL_TYPE);
- TYPE_PRECISION (longreal) = LONG_DOUBLE_TYPE_SIZE;
- }
- else if (M2Options_GetIEEELongDouble ())
+ if (M2Options_GetIEEELongDouble ())
longreal = float128_type_node;
else
longreal = long_double_type_node;
- layout_type (longreal);
return longreal;
}