From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 68CBD385417B for ; Fri, 21 Oct 2022 13:01:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 68CBD385417B Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 29LD1Hmu010844 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Oct 2022 09:01:22 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 29LD1Hmu010844 Received: from simark.localdomain (unknown [217.28.27.60]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 8E22B1E0CB; Fri, 21 Oct 2022 09:01:17 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Subject: [pushed] gdb: declare variables on first use in inherit_abstract_dies Date: Fri, 21 Oct 2022 09:01:16 -0400 Message-Id: <20221021130116.1647442-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.38.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Fri, 21 Oct 2022 13:01:17 +0000 X-Spam-Status: No, score=-3189.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Oct 2022 13:01:25 -0000 Move variable declarations to where they are first use, plus some random style fixes. Change-Id: Idf40d60f9034996fa6a234165cd989a721eb4148 --- gdb/dwarf2/read.c | 51 +++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index b5efcb3cc097..89ba9122e910 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -11825,29 +11825,20 @@ queue_and_load_all_dwo_tus (dwarf2_cu *cu) static void inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) { - struct die_info *child_die; - sect_offset *offsetp; - /* Parent of DIE - referenced by DW_AT_abstract_origin. */ - struct die_info *origin_die; - /* Iterator of the ORIGIN_DIE children. */ - struct die_info *origin_child_die; - struct attribute *attr; - struct dwarf2_cu *origin_cu; - struct pending **origin_previous_list_in_scope; - - attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); - if (!attr) + attribute *attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); + if (attr == nullptr) return; /* Note that following die references may follow to a die in a - different cu. */ + different CU. */ + dwarf2_cu *origin_cu = cu; - origin_cu = cu; - origin_die = follow_die_ref (die, attr, &origin_cu); + /* Parent of DIE - referenced by DW_AT_abstract_origin. */ + die_info *origin_die = follow_die_ref (die, attr, &origin_cu); /* We're inheriting ORIGIN's children into the scope we'd put DIE's symbols in. */ - origin_previous_list_in_scope = origin_cu->list_in_scope; + struct pending **origin_previous_list_in_scope = origin_cu->list_in_scope; origin_cu->list_in_scope = cu->list_in_scope; if (die->tag != origin_die->tag @@ -11890,13 +11881,10 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) std::vector offsets; - for (child_die = die->child; + for (die_info *child_die = die->child; child_die && child_die->tag; child_die = child_die->sibling) { - struct die_info *child_origin_die; - struct dwarf2_cu *child_origin_cu; - /* We are trying to process concrete instance entries: DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but it's not relevant to our analysis here. i.e. detecting DIEs that are @@ -11916,14 +11904,15 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) DW_AT_abstract_origin, follow them all; there shouldn't be, but GCC versions at least through 4.4 generate this (GCC PR 40573). */ - child_origin_die = child_die; - child_origin_cu = cu; - while (1) + die_info *child_origin_die = child_die; + dwarf2_cu *child_origin_cu = cu; + while (true) { attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin, child_origin_cu); - if (attr == NULL) + if (attr == nullptr) break; + child_origin_die = follow_die_ref (child_origin_die, attr, &child_origin_cu); } @@ -11959,22 +11948,26 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) if (are_isomorphic) corresponding_abstract_child = corresponding_abstract_child->sibling; } + std::sort (offsets.begin (), offsets.end ()); sect_offset *offsets_end = offsets.data () + offsets.size (); - for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++) + for (sect_offset *offsetp = offsets.data () + 1; + offsetp < offsets_end; + offsetp++) if (offsetp[-1] == *offsetp) complaint (_("Multiple children of DIE %s refer " "to DIE %s as their abstract origin"), sect_offset_str (die->sect_off), sect_offset_str (*offsetp)); - offsetp = offsets.data (); - origin_child_die = origin_die->child; - while (origin_child_die && origin_child_die->tag) + sect_offset *offsetp = offsets.data (); + die_info *origin_child_die = origin_die->child; + while (origin_child_die != nullptr && origin_child_die->tag != 0) { /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */ while (offsetp < offsets_end && *offsetp < origin_child_die->sect_off) offsetp++; + if (offsetp >= offsets_end || *offsetp > origin_child_die->sect_off) { @@ -11985,8 +11978,10 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) if (!origin_child_die->in_process) process_die (origin_child_die, origin_cu); } + origin_child_die = origin_child_die->sibling; } + origin_cu->list_in_scope = origin_previous_list_in_scope; if (cu != origin_cu) base-commit: 4b2e7a577c2f7311a8c381ff791d46e654c41fcc -- 2.38.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 68CBD385417B for ; Fri, 21 Oct 2022 13:01:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 68CBD385417B Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 29LD1Hmu010844 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Oct 2022 09:01:22 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 29LD1Hmu010844 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1666357282; bh=tReRIAH6Ej57soAuUjka9sqI6QhP1FQYgUT71HTBtNk=; h=From:To:Cc:Subject:Date:From; b=h97qlOHOCIz7dlSjmAbRVcd+pSSpT0Lt6iR48O06zp5O7l3XiXwgt4dnYn6M8jnsu 6t0AgfU6eUQP9MDORoaVfMCEfRqMWkxpoIukQvVn6fYAUd7qM0ylpyc9a2GZ0htBkZ 3t62RWM4qim34hTsazwMLcea6+druqiXd46qDIJI= Received: from simark.localdomain (unknown [217.28.27.60]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 8E22B1E0CB; Fri, 21 Oct 2022 09:01:17 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [pushed] gdb: declare variables on first use in inherit_abstract_dies Date: Fri, 21 Oct 2022 09:01:16 -0400 Message-ID: <20221021130116.1647442-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.38.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Fri, 21 Oct 2022 13:01:17 +0000 X-Spam-Status: No, score=-3189.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Message-ID: <20221021130116.RH_kaMhQQmim5rzrTJO7jSBN0VUZPjlqyrnWffouXJM@z> Move variable declarations to where they are first use, plus some random style fixes. Change-Id: Idf40d60f9034996fa6a234165cd989a721eb4148 --- gdb/dwarf2/read.c | 51 +++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index b5efcb3cc097..89ba9122e910 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -11825,29 +11825,20 @@ queue_and_load_all_dwo_tus (dwarf2_cu *cu) static void inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) { - struct die_info *child_die; - sect_offset *offsetp; - /* Parent of DIE - referenced by DW_AT_abstract_origin. */ - struct die_info *origin_die; - /* Iterator of the ORIGIN_DIE children. */ - struct die_info *origin_child_die; - struct attribute *attr; - struct dwarf2_cu *origin_cu; - struct pending **origin_previous_list_in_scope; - - attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); - if (!attr) + attribute *attr = dwarf2_attr (die, DW_AT_abstract_origin, cu); + if (attr == nullptr) return; /* Note that following die references may follow to a die in a - different cu. */ + different CU. */ + dwarf2_cu *origin_cu = cu; - origin_cu = cu; - origin_die = follow_die_ref (die, attr, &origin_cu); + /* Parent of DIE - referenced by DW_AT_abstract_origin. */ + die_info *origin_die = follow_die_ref (die, attr, &origin_cu); /* We're inheriting ORIGIN's children into the scope we'd put DIE's symbols in. */ - origin_previous_list_in_scope = origin_cu->list_in_scope; + struct pending **origin_previous_list_in_scope = origin_cu->list_in_scope; origin_cu->list_in_scope = cu->list_in_scope; if (die->tag != origin_die->tag @@ -11890,13 +11881,10 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) std::vector offsets; - for (child_die = die->child; + for (die_info *child_die = die->child; child_die && child_die->tag; child_die = child_die->sibling) { - struct die_info *child_origin_die; - struct dwarf2_cu *child_origin_cu; - /* We are trying to process concrete instance entries: DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but it's not relevant to our analysis here. i.e. detecting DIEs that are @@ -11916,14 +11904,15 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) DW_AT_abstract_origin, follow them all; there shouldn't be, but GCC versions at least through 4.4 generate this (GCC PR 40573). */ - child_origin_die = child_die; - child_origin_cu = cu; - while (1) + die_info *child_origin_die = child_die; + dwarf2_cu *child_origin_cu = cu; + while (true) { attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin, child_origin_cu); - if (attr == NULL) + if (attr == nullptr) break; + child_origin_die = follow_die_ref (child_origin_die, attr, &child_origin_cu); } @@ -11959,22 +11948,26 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) if (are_isomorphic) corresponding_abstract_child = corresponding_abstract_child->sibling; } + std::sort (offsets.begin (), offsets.end ()); sect_offset *offsets_end = offsets.data () + offsets.size (); - for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++) + for (sect_offset *offsetp = offsets.data () + 1; + offsetp < offsets_end; + offsetp++) if (offsetp[-1] == *offsetp) complaint (_("Multiple children of DIE %s refer " "to DIE %s as their abstract origin"), sect_offset_str (die->sect_off), sect_offset_str (*offsetp)); - offsetp = offsets.data (); - origin_child_die = origin_die->child; - while (origin_child_die && origin_child_die->tag) + sect_offset *offsetp = offsets.data (); + die_info *origin_child_die = origin_die->child; + while (origin_child_die != nullptr && origin_child_die->tag != 0) { /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */ while (offsetp < offsets_end && *offsetp < origin_child_die->sect_off) offsetp++; + if (offsetp >= offsets_end || *offsetp > origin_child_die->sect_off) { @@ -11985,8 +11978,10 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu) if (!origin_child_die->in_process) process_die (origin_child_die, origin_cu); } + origin_child_die = origin_child_die->sibling; } + origin_cu->list_in_scope = origin_previous_list_in_scope; if (cu != origin_cu) base-commit: 4b2e7a577c2f7311a8c381ff791d46e654c41fcc -- 2.38.0