aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-streamer-in.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-09-17 16:03:44 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2012-09-17 16:03:44 +0000
commitf57f20bb753e877d9285fd75dd6b46fa244bb27f (patch)
tree4f9e936d7fd8490ff3982d32427fc8a0c4916c32 /gcc/tree-streamer-in.c
parenta7b3cdfc2840455c194e8a23d0db613c3a6b7707 (diff)
downloadgcc-f57f20bb753e877d9285fd75dd6b46fa244bb27f.zip
gcc-f57f20bb753e877d9285fd75dd6b46fa244bb27f.tar.gz
gcc-f57f20bb753e877d9285fd75dd6b46fa244bb27f.tar.bz2
re PR lto/54598 (ICE: Segmentation fault in lto1 at tree-streamer-in.c:unpack_ts_fixed_cst_value_fields())
PR lto/54598 * tree-streamer-in.c (unpack_ts_real_cst_value_fields): Use ggc'ed FIXED_VALUE_TYPE instead of struct fixed_value. From-SVN: r191394
Diffstat (limited to 'gcc/tree-streamer-in.c')
-rw-r--r--gcc/tree-streamer-in.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index a38fb47..5f9f7a2 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -172,12 +172,11 @@ unpack_ts_real_cst_value_fields (struct bitpack_d *bp, tree expr)
static void
unpack_ts_fixed_cst_value_fields (struct bitpack_d *bp, tree expr)
{
- struct fixed_value fv;
-
- fv.mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE);
- fv.data.low = bp_unpack_var_len_int (bp);
- fv.data.high = bp_unpack_var_len_int (bp);
- TREE_FIXED_CST (expr) = fv;
+ FIXED_VALUE_TYPE *fp = ggc_alloc_fixed_value ();
+ fp->mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE);
+ fp->data.low = bp_unpack_var_len_int (bp);
+ fp->data.high = bp_unpack_var_len_int (bp);
+ TREE_FIXED_CST_PTR (expr) = fp;
}