From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id D0AE53857C70 for ; Tue, 11 Aug 2020 11:37:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D0AE53857C70 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mliska@suse.cz X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id AE1F4B6DB; Tue, 11 Aug 2020 11:38:05 +0000 (UTC) Subject: [PATCH 3/3] vec: use inexact growth where possible. From: =?UTF-8?Q?Martin_Li=c5=a1ka?= To: Richard Biener Cc: GCC Patches , Jan Hubicka References: <8bf8b90a-6d10-90e3-62aa-633f7bbf71be@suse.cz> <34bd3626-39c0-2516-208d-0ebf5a736b1c@suse.cz> <20200727111104.GB84823@kam.mff.cuni.cz> <0011f4a6-7ece-47f6-e864-f837216f71c7@suse.cz> <84b9586d-63da-18bd-9113-05597520d58c@suse.cz> Message-ID: <4fab8070-5eff-1f2c-b916-8af1101fd0f9@suse.cz> Date: Tue, 11 Aug 2020 13:37:44 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------2CBE6F8CAC583995FB6880D8" Content-Language: en-US X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2020 11:37:47 -0000 This is a multi-part message in MIME format. --------------2CBE6F8CAC583995FB6880D8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit --------------2CBE6F8CAC583995FB6880D8 Content-Type: text/x-patch; charset=UTF-8; name="0003-vec-use-inexact-growth-where-possible.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0003-vec-use-inexact-growth-where-possible.patch" >From cc1d41a469d76f2f8e4f44bed788ace77a1c6d62 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 10 Aug 2020 12:09:19 +0200 Subject: [PATCH 3/3] vec: use inexact growth where possible. gcc/ChangeLog: * cfgrtl.c (rtl_create_basic_block): Use default value for growth vector function. * gimple.c (gimple_set_bb): Likewise. * symbol-summary.h: Likewise. * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. (build_gimple_cfg): Likewise. (create_bb): Likewise. (move_block_to_fn): Likewise. --- gcc/cfgrtl.c | 8 ++------ gcc/gimple.c | 7 +------ gcc/symbol-summary.h | 13 +++---------- gcc/tree-cfg.c | 27 +++++++++------------------ 4 files changed, 15 insertions(+), 40 deletions(-) diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 03fa688fed6..0e65537f255 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -374,12 +374,8 @@ rtl_create_basic_block (void *headp, void *endp, basic_block after) /* Grow the basic block array if needed. */ if ((size_t) last_basic_block_for_fn (cfun) >= basic_block_info_for_fn (cfun)->length ()) - { - size_t new_size = - (last_basic_block_for_fn (cfun) - + (last_basic_block_for_fn (cfun) + 3) / 4); - vec_safe_grow_cleared (basic_block_info_for_fn (cfun), new_size, true); - } + vec_safe_grow_cleared (basic_block_info_for_fn (cfun), + last_basic_block_for_fn (cfun) + 1); n_basic_blocks_for_fn (cfun)++; diff --git a/gcc/gimple.c b/gcc/gimple.c index 337a83a9154..a174ed48e0b 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -1689,12 +1689,7 @@ gimple_set_bb (gimple *stmt, basic_block bb) vec_safe_length (label_to_block_map_for_fn (cfun)); LABEL_DECL_UID (t) = uid = cfun->cfg->last_label_uid++; if (old_len <= (unsigned) uid) - { - unsigned new_len = 3 * uid / 2 + 1; - - vec_safe_grow_cleared (label_to_block_map_for_fn (cfun), - new_len, true); - } + vec_safe_grow_cleared (label_to_block_map_for_fn (cfun), uid + 1); } (*label_to_block_map_for_fn (cfun))[uid] = bb; diff --git a/gcc/symbol-summary.h b/gcc/symbol-summary.h index fa1df5c8015..a38eb1db778 100644 --- a/gcc/symbol-summary.h +++ b/gcc/symbol-summary.h @@ -354,11 +354,8 @@ public: id = this->m_symtab->assign_summary_id (node); if ((unsigned int)id >= m_vector->length ()) - { - int newlen = this->m_symtab->cgraph_max_summary_id; - vec_safe_reserve (m_vector, newlen - m_vector->length ()); - m_vector->quick_grow_cleared (newlen); - } + vec_safe_grow_cleared (m_vector, + this->m_symtab->cgraph_max_summary_id); if ((*m_vector)[id] == NULL) (*m_vector)[id] = this->allocate_new (); @@ -815,11 +812,7 @@ public: id = this->m_symtab->assign_summary_id (edge); if ((unsigned)id >= m_vector->length ()) - { - int newlen = this->m_symtab->edges_max_summary_id; - m_vector->reserve (newlen - m_vector->length ()); - m_vector->quick_grow_cleared (newlen); - } + vec_safe_grow_cleared (m_vector, this->m_symtab->edges_max_summary_id); if ((*m_vector)[id] == NULL) (*m_vector)[id] = this->allocate_new (); diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 2bae2eeddba..b79cf6c6d4c 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -183,12 +183,12 @@ init_empty_tree_cfg_for_function (struct function *fn) last_basic_block_for_fn (fn) = NUM_FIXED_BLOCKS; vec_alloc (basic_block_info_for_fn (fn), initial_cfg_capacity); vec_safe_grow_cleared (basic_block_info_for_fn (fn), - initial_cfg_capacity, true); + initial_cfg_capacity); /* Build a mapping of labels to their associated blocks. */ vec_alloc (label_to_block_map_for_fn (fn), initial_cfg_capacity); vec_safe_grow_cleared (label_to_block_map_for_fn (fn), - initial_cfg_capacity, true); + initial_cfg_capacity); SET_BASIC_BLOCK_FOR_FN (fn, ENTRY_BLOCK, ENTRY_BLOCK_PTR_FOR_FN (fn)); SET_BASIC_BLOCK_FOR_FN (fn, EXIT_BLOCK, EXIT_BLOCK_PTR_FOR_FN (fn)); @@ -232,7 +232,7 @@ build_gimple_cfg (gimple_seq seq) if (basic_block_info_for_fn (cfun)->length () < (size_t) n_basic_blocks_for_fn (cfun)) vec_safe_grow_cleared (basic_block_info_for_fn (cfun), - n_basic_blocks_for_fn (cfun), true); + n_basic_blocks_for_fn (cfun)); /* To speed up statement iterator walks, we first purge dead labels. */ cleanup_dead_labels (); @@ -681,12 +681,8 @@ create_bb (void *h, void *e, basic_block after) /* Grow the basic block array if needed. */ if ((size_t) last_basic_block_for_fn (cfun) == basic_block_info_for_fn (cfun)->length ()) - { - size_t new_size = - (last_basic_block_for_fn (cfun) - + (last_basic_block_for_fn (cfun) + 3) / 4); - vec_safe_grow_cleared (basic_block_info_for_fn (cfun), new_size, true); - } + vec_safe_grow_cleared (basic_block_info_for_fn (cfun), + last_basic_block_for_fn (cfun) + 1); /* Add the newly created block to the array. */ SET_BASIC_BLOCK_FOR_FN (cfun, last_basic_block_for_fn (cfun), bb); @@ -7097,7 +7093,7 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, edge_iterator ei; edge e; gimple_stmt_iterator si; - unsigned old_len, new_len; + unsigned old_len; /* Remove BB from dominance structures. */ delete_from_dominance_info (CDI_DOMINATORS, bb); @@ -7133,10 +7129,8 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, old_len = vec_safe_length (cfg->x_basic_block_info); if ((unsigned) cfg->x_last_basic_block >= old_len) - { - new_len = cfg->x_last_basic_block + (cfg->x_last_basic_block + 3) / 4; - vec_safe_grow_cleared (cfg->x_basic_block_info, new_len, true); - } + vec_safe_grow_cleared (cfg->x_basic_block_info, + cfg->x_last_basic_block + 1); (*cfg->x_basic_block_info)[bb->index] = bb; @@ -7209,10 +7203,7 @@ move_block_to_fn (struct function *dest_cfun, basic_block bb, old_len = vec_safe_length (cfg->x_label_to_block_map); if (old_len <= (unsigned) uid) - { - new_len = 3 * uid / 2 + 1; - vec_safe_grow_cleared (cfg->x_label_to_block_map, new_len, true); - } + vec_safe_grow_cleared (cfg->x_label_to_block_map, uid + 1); (*cfg->x_label_to_block_map)[uid] = bb; (*cfun->cfg->x_label_to_block_map)[uid] = NULL; -- 2.28.0 --------------2CBE6F8CAC583995FB6880D8--