aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2022-04-27 13:48:49 +0200
committerRichard Biener <rguenther@suse.de>2022-05-05 13:19:40 +0200
commitf1d8a2d9bc3a817309c299147ff85e5091b6693e (patch)
tree8b2d00e5ce2dddc228aad8c500d501a3fa2ddf73 /gcc/cp
parentc2a0d2e6f636c6ad7da44256b6bea7470d895100 (diff)
downloadgcc-f1d8a2d9bc3a817309c299147ff85e5091b6693e.zip
gcc-f1d8a2d9bc3a817309c299147ff85e5091b6693e.tar.gz
gcc-f1d8a2d9bc3a817309c299147ff85e5091b6693e.tar.bz2
Embed real_value into REAL_CST
The following removes the indirection to real_value from REAL_CST which doesn't seem to serve any useful purpose. Any sharing can be achieved by sharing the actual REAL_CST (which is what usually happens when copying trees) and sharing of real_value amongst different REAL_CST doesn't happen as far as I can see and would only lead to further issues like mismatching type and real_value. 2022-04-27 Richard Biener <rguenther@suse.de> * tree-core.h (tree_real_cst::real_cst_ptr): Remove pointer to real_value field. (tree_real_cst::value): Add real_value field. * tree.h (TREE_REAL_CST_PTR): Adjust. * tree.cc (build_real): Remove separate allocation. * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Likewise. gcc/cp/ * module.cc (trees_in::core_vals): Remove separate allocation for REAL_CST.
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/module.cc4
1 files changed, 1 insertions, 3 deletions
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index cebf9c3..18dabfc 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6468,9 +6468,7 @@ trees_in::core_vals (tree t)
case REAL_CST:
if (const void *bytes = buf (sizeof (real_value)))
- TREE_REAL_CST_PTR (t)
- = reinterpret_cast<real_value *> (memcpy (ggc_alloc<real_value> (),
- bytes, sizeof (real_value)));
+ memcpy (TREE_REAL_CST_PTR (t), bytes, sizeof (real_value));
break;
case STRING_CST: