From 360386c7ef1c3fa30de216b1d68ed6a27296fd80 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sun, 3 Nov 2019 16:58:43 +0100 Subject: [PATCH] ipa-fnsummary.c (inline_read_section): Set vector size ahead of time. * ipa-fnsummary.c (inline_read_section): Set vector size ahead of time. From-SVN: r277756 --- gcc/ChangeLog | 5 +++++ gcc/ipa-fnsummary.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 817a33376a0..c2498907314 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-11-02 Jan Hubicka + + * ipa-fnsummary.c (inline_read_section): Set vector size + ahead of time. + 2019-11-02 Jan Hubicka * ipa-fnsummary.c (ipa_call_context): New constructor. diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index 9dc87547faf..96b50cc445f 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -3638,6 +3638,8 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data, count2 = streamer_read_uhwi (&ib); gcc_assert (!info || !info->conds); + if (info) + vec_safe_reserve_exact (info->conds, count2); for (j = 0; j < count2; j++) { struct condition c; @@ -3651,8 +3653,10 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data, c.by_ref = bp_unpack_value (&bp, 1); if (c.agg_contents) c.offset = streamer_read_uhwi (&ib); - c.param_ops = NULL; count3 = streamer_read_uhwi (&ib); + c.param_ops = NULL; + if (info) + vec_safe_reserve_exact (c.param_ops, count3); for (k = 0; k < count3; k++) { struct expr_eval_op op; @@ -3682,13 +3686,16 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data, fatal_error (UNKNOWN_LOCATION, "invalid fnsummary in LTO stream"); } - vec_safe_push (c.param_ops, op); + if (info) + c.param_ops->quick_push (op); } if (info) - vec_safe_push (info->conds, c); + info->conds->quick_push (c); } count2 = streamer_read_uhwi (&ib); gcc_assert (!info || !info->size_time_table); + if (info && count2) + vec_safe_reserve_exact (info->size_time_table, count2); for (j = 0; j < count2; j++) { class size_time_entry e; @@ -3699,7 +3706,7 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data, e.nonconst_predicate.stream_in (&ib); if (info) - vec_safe_push (info->size_time_table, e); + info->size_time_table->quick_push (e); } p.stream_in (&ib); -- 2.30.2