From patchwork Thu Sep 28 09:12:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 145870 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3174406vqu; Thu, 28 Sep 2023 02:12:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHbWTAiSP9fWTZaitAzOHUgMvmkjgTogfAVevQ+F1xTi4M8Zig1RBMX9AaJYt0WDrK2McMa X-Received: by 2002:a05:6402:12c1:b0:523:38f5:c5ad with SMTP id k1-20020a05640212c100b0052338f5c5admr606520edx.20.1695892369539; Thu, 28 Sep 2023 02:12:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695892369; cv=none; d=google.com; s=arc-20160816; b=dajkbM3pEccehHLDiih6FGBg6ZayZfU6em0Wbmpibio2+Smta+59b1LdrxjWh1S5kW eJfiYMFIdCJBfhLYU2YEcWrnEtwxYMJWi5GW8YexUSwuYbFkzR4Wyc214xbzeKlrFmak RcLBiaZj3lexwtZqaPyKJPF2nyO9sz08XZzRB7hdIMb5idgalbXzmZGClTcMRNP24DqV dMpOfb3JnNrjVsvjih5gIfY7IDhxWwpqM37FjbCBNLH7LmmDBgM872sRxi28z4pi1P9/ h079xAoCHeolJUqphJXn6xtsqeVkws1AicuY2fhwgmBUb3ZsqgrJhBA0jsupcffGOiQk 3qRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:reply-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-disposition :mime-version:message-id:subject:cc:to:from:date:dkim-signature :dmarc-filter:delivered-to; bh=ojD3G8IVm/qJtlLF3Rq6UuPdRwGpmxCY2rsyaSw5z18=; fh=eM2nYbNDZ6Theupq9WaNJQV2QgkrsvQk+3X75erbI8c=; b=cZ5M43XNZI1qCmG6ZlJv1psCISuSZC8PaMG9fVsKsJX3k6n65cYNBcOEs8tb6rOiu9 igyo9vs1xBtPctPwFDyrerj1x45fv7Ns2xj73gb0cx3IyDQw5lJW9dAXBPxGvi/t/zYO MLRSWgKp4gNSCC/w//KoEFk45E325KzI3S0mNxlZFrkAmYDhoS0UQzOS6Gzp443LyIGQ EJ7tAouGXNL2/SXxur+Dx2SzQdjaAHDJCIu96NuI1wQtQueL4uKXDb/dJ38WBpOqL5XA WsHtEy6ouJugCgzbOrCoCCm6uVMUJya8amzQGl8QqiqvQYhOzetz91LIXNwxjjqcCzlw qiLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QKodIkeW; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id m15-20020aa7c48f000000b00530e180dfa7si14987232edq.475.2023.09.28.02.12.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Sep 2023 02:12:49 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QKodIkeW; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2BD763861825 for ; Thu, 28 Sep 2023 09:12:42 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 897EC3858D20 for ; Thu, 28 Sep 2023 09:12:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 897EC3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695892330; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=ojD3G8IVm/qJtlLF3Rq6UuPdRwGpmxCY2rsyaSw5z18=; b=QKodIkeW0TSNitqgNiYyugss/8sHV7YkWyONU6W+UAR7/bmCqKehqf5CtN5iELN7AXinjJ AuQi+lR/U3MBvDxf+bW+2Cyo+EC60U8IthZPs+/mAorGHnC3dPGwbbx6ezOQfo371G6NeR mccSPXQm0ws3Ula1q6F1A00W0GxzqjA= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-209-KQzynvw4MoWUy8r_4h7_fA-1; Thu, 28 Sep 2023 05:12:08 -0400 X-MC-Unique: KQzynvw4MoWUy8r_4h7_fA-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BC6771C0CCB7; Thu, 28 Sep 2023 09:12:07 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.39.193.202]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 23E52492B16; Thu, 28 Sep 2023 09:12:07 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.17.1/8.17.1) with ESMTPS id 38S9C46f2638700 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Thu, 28 Sep 2023 11:12:04 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.17.1/8.17.1/Submit) id 38S9C38C2638699; Thu, 28 Sep 2023 11:12:03 +0200 Date: Thu, 28 Sep 2023 11:12:02 +0200 From: Jakub Jelinek To: Richard Biener , Richard Sandiford Cc: gcc-patches@gcc.gnu.org Subject: [PATCH] bitmap: Introduce bitmap_head_pod Message-ID: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_SBL_CSS, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Jakub Jelinek Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778272037361052145 X-GMAIL-MSGID: 1778272037361052145 Hi! The following patch splits the bitmap_head class into a POD struct bitmap_head_pod and bitmap_head derived from it with non-trivial default constexpr constructor. Most code should keep using bitmap_head as before, bitmap_head_pod is there just for the cases where we want to embed the bitmap head into a vector which we want to e.g. {quick,safe}_grow and in a loop bitmap_initialize it afterwards (to avoid having to {quick,safe}_grow_cleared them just to overwrite with bitmap_initialize). The patch is larger than I hoped, because e.g. some code just used bitmap and bitmap_head * or const_bitmap and const bitmap_head * interchangeably. Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2023-09-28 Jakub Jelinek * coretypes.h (struct bitmap_head_pod): New forward declaration. (bitmap, const_bitmap): Replace bitmap_head with bitmap_head_pod in typedefs. * bitmap.h (struct bitmap_obstack): Change heads element type to bitmap_head_pod *. (struct bitmap_head_pod): New type. (class bitmap_head): Changed into derived class from bitmap_head_pod with a non-trivial constexpr default ctor. * bitmap.cc (bitmap_head::crashme): Remove. (bitmap_head_pod::crashme): New static data member. (debug): Change bitmap_head to bitmap_head_pod. (bitmap_head::dump): Renamed to ... (bitmap_head_pod::dump): ... this. * tree-ssa-live.h (compute_live_vars, live_vars_at_stmt, destroy_live_vars): Change vec to vec. * tree-ssa-live.cc (struct compute_live_vars_data): Change active member type to vec. (compute_live_vars, live_vars_at_stmt, destroy_live_vars): Change vec to vec. * sel-sched-ir.h (forced_ebb_heads): Change type to bitmap. * gimple-range-path.cc (path_range_query::path_range_query, path_range_query::reset_path, path_range_query::compute_ranges): Change const bitmap_head * in argument types to const_bitmap. * gimple-range-path.h (path_range_query::path_range_query, path_range_query::reset_path, path_range_query::compute_ranges): Likewise. (path_range_query::compute_exit_dependencies): Change bitmap_head * in argument type to bitmap. * tree-ssa-loop-im.cc (memory_accesses): Change type of 3 members from vec to vec. * tree-tailcall.cc (live_vars_vec): Change type from vec to vec. * cfganal.cc (compute_dominance_frontiers, compute_idf): Change argument types from bitmap_head * to bitmap. * rtl-ssa/internals.h (function_info::bb_phi_info): Change regs member type from bitmap_head to bitmap_head_pod. * rtl-ssa/blocks.cc (function_info::place_phis): Change frontiers and unfiltered variable types from auto_vec to auto_vec. * tree-ssa-pre.cc (class bitmap_set): Change expressions and values member types from bitmap_head to bitmap_head_pod. * tree-inline.cc (add_clobbers_to_eh_landing_pad): Change live variable type from vec to vec. * cfganal.h (class control_dependences): Change control_dependence_map member type from vec to vec. (compute_dominance_frontiers, compute_idf): Change argument types from class bitmap_head * to bitmap. Jakub --- gcc/coretypes.h.jj 2023-08-24 15:37:28.233424065 +0200 +++ gcc/coretypes.h 2023-09-27 14:17:00.764453202 +0200 @@ -47,9 +47,10 @@ typedef int64_t gcov_type; typedef uint64_t gcov_type_unsigned; struct bitmap_obstack; +struct bitmap_head_pod; class bitmap_head; -typedef class bitmap_head *bitmap; -typedef const class bitmap_head *const_bitmap; +typedef class bitmap_head_pod *bitmap; +typedef const class bitmap_head_pod *const_bitmap; struct simple_bitmap_def; typedef struct simple_bitmap_def *sbitmap; typedef const struct simple_bitmap_def *const_sbitmap; --- gcc/bitmap.h.jj 2023-04-19 09:33:59.141354388 +0200 +++ gcc/bitmap.h 2023-09-27 15:13:45.700647295 +0200 @@ -293,7 +293,7 @@ typedef unsigned long BITMAP_WORD; /* Obstack for allocating bitmaps and elements from. */ struct bitmap_obstack { struct bitmap_element *elements; - bitmap_head *heads; + bitmap_head_pod *heads; struct obstack obstack; }; @@ -323,15 +323,16 @@ struct GTY((chain_next ("%h.next"))) bit }; /* Head of bitmap linked list. The 'current' member points to something - already pointed to by the chain started by first, so GTY((skip)) it. */ + already pointed to by the chain started by first, so GTY((skip)) it. + desc("0"), tag("0") is just to make gengtype happy, for GC there is + no difference between bitmap_head_pod and bitmap_head types. */ -class GTY(()) bitmap_head { -public: +struct GTY((desc("0"), tag("0"))) bitmap_head_pod { static bitmap_obstack crashme; - /* Poison obstack to not make it not a valid initialized GC bitmap. */ - CONSTEXPR bitmap_head() - : indx (0), tree_form (false), padding (0), alloc_descriptor (0), first (NULL), - current (NULL), obstack (&crashme) + bitmap_head_pod () = default; + CONSTEXPR bitmap_head_pod (unsigned int n, bool t, unsigned p, unsigned a) + : indx (n), tree_form (t), padding (p), alloc_descriptor (a), + first (NULL), current (NULL), obstack (&crashme) {} /* Index of last element looked at. */ unsigned int indx; @@ -362,6 +363,13 @@ public: } }; +class GTY(()) bitmap_head : public bitmap_head_pod { +public: + /* Poison obstack to not make it not a valid initialized GC bitmap. */ + CONSTEXPR bitmap_head() : bitmap_head_pod (0, false, 0, 0) + {} +}; + /* Global data */ extern bitmap_element bitmap_zero_bits; /* Zero bitmap element */ extern bitmap_obstack bitmap_default_obstack; /* Default bitmap obstack */ --- gcc/bitmap.cc.jj 2023-04-19 09:33:59.141354388 +0200 +++ gcc/bitmap.cc 2023-09-27 19:48:33.347080275 +0200 @@ -28,7 +28,7 @@ mem_alloc_description bitm /* Static zero-initialized bitmap obstack used for default initialization of bitmap_head. */ -bitmap_obstack bitmap_head::crashme; +bitmap_obstack bitmap_head_pod::crashme; static bitmap_element *bitmap_tree_listify_from (bitmap, bitmap_element *); @@ -2849,13 +2849,13 @@ dump_bitmap_statistics (void) } DEBUG_FUNCTION void -debug (const bitmap_head &ref) +debug (const bitmap_head_pod &ref) { dump_bitmap (stderr, &ref); } DEBUG_FUNCTION void -debug (const bitmap_head *ptr) +debug (const bitmap_head_pod *ptr) { if (ptr) debug (*ptr); @@ -2866,17 +2866,17 @@ debug (const bitmap_head *ptr) DEBUG_FUNCTION void debug (const auto_bitmap &ref) { - debug ((const bitmap_head &) ref); + debug ((const bitmap_head_pod &) ref); } DEBUG_FUNCTION void debug (const auto_bitmap *ptr) { - debug ((const bitmap_head *) ptr); + debug ((const bitmap_head_pod *) ptr); } void -bitmap_head::dump () +bitmap_head_pod::dump () { debug (this); } --- gcc/tree-ssa-live.h.jj 2023-09-06 17:28:39.333779470 +0200 +++ gcc/tree-ssa-live.h 2023-09-27 19:45:07.104895327 +0200 @@ -271,10 +271,11 @@ extern void debug (tree_live_info_d *ptr extern void dump_live_info (FILE *, tree_live_info_p, int); typedef hash_map, unsigned int> live_vars_map; -extern vec compute_live_vars (struct function *, live_vars_map *); -extern bitmap live_vars_at_stmt (vec &, live_vars_map *, +extern vec compute_live_vars (struct function *, + live_vars_map *); +extern bitmap live_vars_at_stmt (vec &, live_vars_map *, gimple *); -extern void destroy_live_vars (vec &); +extern void destroy_live_vars (vec &); /* Return TRUE if P is marked as a global in LIVE. */ --- gcc/tree-ssa-live.cc.jj 2023-09-06 17:28:39.333779470 +0200 +++ gcc/tree-ssa-live.cc 2023-09-27 19:44:44.875198746 +0200 @@ -1281,7 +1281,7 @@ struct compute_live_vars_data { /* Vector of bitmaps for live vars indices at the end of basic blocks, indexed by bb->index. ACTIVE[ENTRY_BLOCK] must be empty bitmap, ACTIVE[EXIT_BLOCK] is used for STOP_AFTER. */ - vec active; + vec active; /* Work bitmap of currently live variables. */ bitmap work; /* Set of interesting variables. Variables with uids not in this @@ -1345,10 +1345,10 @@ compute_live_vars_1 (basic_block bb, com indexes of automatic variables VARS, compute which of those variables are (might be) live at the end of each basic block. */ -vec +vec compute_live_vars (struct function *fn, live_vars_map *vars) { - vec active; + vec active; /* We approximate the live range of a stack variable by taking the first mention of its name as starting point(s), and by the end-of-scope @@ -1395,7 +1395,7 @@ compute_live_vars (struct function *fn, live after the STOP_AFTER statement and return that bitmap. */ bitmap -live_vars_at_stmt (vec &active, live_vars_map *vars, +live_vars_at_stmt (vec &active, live_vars_map *vars, gimple *stop_after) { bitmap work = BITMAP_ALLOC (NULL); @@ -1408,7 +1408,7 @@ live_vars_at_stmt (vec &act /* Destroy what compute_live_vars has returned when it is no longer needed. */ void -destroy_live_vars (vec &active) +destroy_live_vars (vec &active) { unsigned len = active.length (); for (unsigned i = 0; i < len; i++) --- gcc/sel-sched-ir.h.jj 2023-02-28 11:29:22.291806607 +0100 +++ gcc/sel-sched-ir.h 2023-09-27 15:30:48.280695816 +0200 @@ -951,7 +951,7 @@ extern vec sel_r #define BB_AV_SET_VALID_P(BB) (BB_AV_LEVEL (BB) == global_level) /* Used in bb_in_ebb_p. */ -extern bitmap_head *forced_ebb_heads; +extern bitmap forced_ebb_heads; /* The loop nest being pipelined. */ extern class loop *current_loop_nest; --- gcc/gimple-range-path.cc.jj 2023-04-27 10:17:45.874494495 +0200 +++ gcc/gimple-range-path.cc 2023-09-27 15:27:16.326603893 +0200 @@ -38,7 +38,7 @@ along with GCC; see the file COPYING3. path_range_query::path_range_query (gimple_ranger &ranger, const vec &path, - const bitmap_head *dependencies, + const_bitmap dependencies, bool resolve) : m_cache (), m_ranger (ranger), @@ -192,7 +192,7 @@ path_range_query::unreachable_path_p () void path_range_query::reset_path (const vec &path, - const bitmap_head *dependencies) + const_bitmap dependencies) { gcc_checking_assert (path.length () > 1); m_path = path.copy (); @@ -549,7 +549,7 @@ path_range_query::compute_exit_dependenc // calculated from the final conditional in the path. void -path_range_query::compute_ranges (const bitmap_head *dependencies) +path_range_query::compute_ranges (const_bitmap dependencies) { if (DEBUG_SOLVER) fprintf (dump_file, "\n==============================================\n"); --- gcc/gimple-range-path.h.jj 2023-04-27 10:17:45.874494495 +0200 +++ gcc/gimple-range-path.h 2023-09-27 15:26:52.980924197 +0200 @@ -34,11 +34,11 @@ class path_range_query : public range_qu public: path_range_query (class gimple_ranger &ranger, const vec &path, - const bitmap_head *dependencies = NULL, + const_bitmap dependencies = NULL, bool resolve = true); path_range_query (gimple_ranger &ranger, bool resolve = true); virtual ~path_range_query (); - void reset_path (const vec &, const bitmap_head *dependencies); + void reset_path (const vec &, const_bitmap dependencies); bool range_of_expr (vrange &r, tree name, gimple * = NULL) override; bool range_of_stmt (vrange &r, gimple *, tree name = NULL) override; bool unreachable_path_p (); @@ -47,8 +47,8 @@ public: private: bool internal_range_of_expr (vrange &r, tree name, gimple *); - void compute_ranges (const bitmap_head *dependencies); - void compute_exit_dependencies (bitmap_head *dependencies); + void compute_ranges (const_bitmap dependencies); + void compute_exit_dependencies (bitmap dependencies); bool defined_outside_path (tree name); void range_on_path_entry (vrange &r, tree name); path_oracle *get_path_oracle () { return (path_oracle *)m_oracle; } --- gcc/tree-ssa-loop-im.cc.jj 2023-09-27 13:40:52.034332877 +0200 +++ gcc/tree-ssa-loop-im.cc 2023-09-27 14:21:18.486901776 +0200 @@ -241,13 +241,13 @@ static struct vec refs_list; /* The set of memory references accessed in each loop. */ - vec refs_loaded_in_loop; + vec refs_loaded_in_loop; /* The set of memory references stored in each loop. */ - vec refs_stored_in_loop; + vec refs_stored_in_loop; /* The set of memory references stored in each loop, including subloops . */ - vec all_refs_stored_in_loop; + vec all_refs_stored_in_loop; /* Cache for expanding memory addresses. */ hash_map *ttae_cache; --- gcc/tree-tailcall.cc.jj 2023-04-24 10:35:04.913938226 +0200 +++ gcc/tree-tailcall.cc 2023-09-27 19:47:11.487197594 +0200 @@ -405,7 +405,7 @@ propagate_through_phis (tree var, edge e /* Argument for compute_live_vars/live_vars_at_stmt and what compute_live_vars returns. Computed lazily, but just once for the function. */ static live_vars_map *live_vars; -static vec live_vars_vec; +static vec live_vars_vec; /* Finds tailcalls falling into basic block BB. The list of found tailcalls is added to the start of RET. */ --- gcc/cfganal.cc.jj 2023-04-22 10:23:40.461614962 +0200 +++ gcc/cfganal.cc 2023-09-27 15:29:14.280985521 +0200 @@ -1636,7 +1636,7 @@ dfs_enumerate_from (basic_block bb, int */ void -compute_dominance_frontiers (bitmap_head *frontiers) +compute_dominance_frontiers (bitmap frontiers) { timevar_push (TV_DOM_FRONTIERS); @@ -1677,7 +1677,7 @@ compute_dominance_frontiers (bitmap_head allocated for the return value. */ bitmap -compute_idf (bitmap def_blocks, bitmap_head *dfs) +compute_idf (bitmap def_blocks, bitmap dfs) { bitmap_iterator bi; unsigned bb_index, i; --- gcc/rtl-ssa/internals.h.jj 2023-01-16 11:52:16.250731603 +0100 +++ gcc/rtl-ssa/internals.h 2023-09-27 14:24:21.961373493 +0200 @@ -25,7 +25,7 @@ class function_info::bb_phi_info { public: // The set of registers that need phi nodes. - bitmap_head regs; + bitmap_head_pod regs; // The number of registers in REGS. unsigned int num_phis; --- gcc/rtl-ssa/blocks.cc.jj 2023-01-16 11:52:16.249731618 +0100 +++ gcc/rtl-ssa/blocks.cc 2023-09-27 14:25:08.113737510 +0200 @@ -613,7 +613,7 @@ function_info::place_phis (build_info &b unsigned int num_bb_indices = last_basic_block_for_fn (m_fn); // Calculate dominance frontiers. - auto_vec frontiers; + auto_vec frontiers; frontiers.safe_grow (num_bb_indices); for (unsigned int i = 0; i < num_bb_indices; ++i) bitmap_initialize (&frontiers[i], &bitmap_default_obstack); @@ -625,7 +625,7 @@ function_info::place_phis (build_info &b // PENDING as a staging area: registers in PENDING need phi nodes if // they are live on entry to the corresponding block, but do not need // phi nodes otherwise. - auto_vec unfiltered; + auto_vec unfiltered; unfiltered.safe_grow (num_bb_indices); for (unsigned int i = 0; i < num_bb_indices; ++i) bitmap_initialize (&unfiltered[i], &bitmap_default_obstack); --- gcc/tree-ssa-pre.cc.jj 2023-08-18 09:33:45.935664082 +0200 +++ gcc/tree-ssa-pre.cc 2023-09-27 19:46:23.099858050 +0200 @@ -484,8 +484,8 @@ get_or_alloc_expr_for_reference (vn_refe typedef class bitmap_set { public: - bitmap_head expressions; - bitmap_head values; + bitmap_head_pod expressions; + bitmap_head_pod values; } *bitmap_set_t; #define FOR_EACH_EXPR_ID_IN_SET(set, id, bi) \ --- gcc/tree-inline.cc.jj 2023-08-28 10:33:11.782178374 +0200 +++ gcc/tree-inline.cc 2023-09-27 19:47:40.719798594 +0200 @@ -2475,7 +2475,7 @@ add_clobbers_to_eh_landing_pad (copy_bod if (vars == NULL) return; - vec live = compute_live_vars (id->src_cfun, vars); + vec live = compute_live_vars (id->src_cfun, vars); FOR_EACH_VEC_SAFE_ELT (id->src_cfun->local_decls, i, var) if (VAR_P (var)) { --- gcc/cfganal.h.jj 2023-04-22 10:23:40.472614801 +0200 +++ gcc/cfganal.h 2023-09-27 15:29:39.712636592 +0200 @@ -44,7 +44,7 @@ private: void set_control_dependence_map_bit (basic_block, int); void clear_control_dependence_bitmap (basic_block); void find_control_dependence (int); - vec control_dependence_map; + vec control_dependence_map; vec > m_el; bitmap_obstack m_bitmaps; }; @@ -77,8 +77,8 @@ extern int rev_post_order_and_mark_dfs_b extern int dfs_enumerate_from (basic_block, int, bool (*)(const_basic_block, const void *), basic_block *, int, const void *); -extern void compute_dominance_frontiers (class bitmap_head *); -extern bitmap compute_idf (bitmap, class bitmap_head *); +extern void compute_dominance_frontiers (bitmap); +extern bitmap compute_idf (bitmap, bitmap); extern void bitmap_intersection_of_succs (sbitmap, sbitmap *, basic_block); extern void bitmap_intersection_of_preds (sbitmap, sbitmap *, basic_block); extern void bitmap_union_of_succs (sbitmap, sbitmap *, basic_block);