diff options
author | Richard Biener <rguenther@suse.de> | 2018-11-22 09:54:14 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-11-22 09:54:14 +0000 |
commit | 7f29dafe76b6530ec8c742487f7061492d7aaaf8 (patch) | |
tree | 11e2bf2f66bf672dc32d6aa0ada91ad0306fd52c /gcc/tree-streamer-out.c | |
parent | d42ef0f85fa3ceacfa64fdded5c08f5bfb669185 (diff) | |
download | gcc-7f29dafe76b6530ec8c742487f7061492d7aaaf8.zip gcc-7f29dafe76b6530ec8c742487f7061492d7aaaf8.tar.gz gcc-7f29dafe76b6530ec8c742487f7061492d7aaaf8.tar.bz2 |
re PR c++/87229 (ICE: tree code 'call_expr' is not supported in LTO streams)
2018-11-22 Richard Biener <rguenther@suse.de>
PR lto/87229
PR lto/88112
* lto-streamer-out.c (lto_is_streamable): Allow CALL_EXPRs
which can appear in size expressions.
* tree-streamer-in.c (unpack_ts_base_value_fields): Stream
CALL_EXPR_BY_DESCRIPTOR.
(streamer_read_tree_bitfields): Stream CALL_EXPR_IFN.
* tree-streamer-out.c (pack_ts_base_value_fields): Stream
CALL_EXPR_BY_DESCRIPTOR.
(streamer_write_tree_bitfields): Stream CALL_EXPR_IFN.
Revert
PR lto/87229
* tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
sizepos values.
From-SVN: r266372
Diffstat (limited to 'gcc/tree-streamer-out.c')
-rw-r--r-- | gcc/tree-streamer-out.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index ac798a3..4e7c742 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -129,6 +129,11 @@ pack_ts_base_value_fields (struct bitpack_d *bp, tree expr) bp_pack_value (bp, SSA_NAME_IS_DEFAULT_DEF (expr), 1); bp_pack_value (bp, 0, 8); } + else if (TREE_CODE (expr) == CALL_EXPR) + { + bp_pack_value (bp, CALL_EXPR_BY_DESCRIPTOR (expr), 1); + bp_pack_value (bp, 0, 8); + } else bp_pack_value (bp, 0, 9); } @@ -457,6 +462,8 @@ streamer_write_tree_bitfields (struct output_block *ob, tree expr) if (MR_DEPENDENCE_CLIQUE (expr) != 0) bp_pack_value (&bp, MR_DEPENDENCE_BASE (expr), sizeof (short) * 8); } + else if (code == CALL_EXPR) + bp_pack_enum (&bp, internal_fn, IFN_LAST, CALL_EXPR_IFN (expr)); } if (CODE_CONTAINS_STRUCT (code, TS_BLOCK)) |