From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 662DA3857C7D for ; Tue, 15 Sep 2020 02:28:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 662DA3857C7D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark@simark.ca Received: from [10.0.0.11] (173-246-6-90.qc.cable.ebox.net [173.246.6.90]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id E3E6B1E055; Mon, 14 Sep 2020 22:28:06 -0400 (EDT) Subject: [pushed] gdb: remove TYPE_INSTANCE_FLAGS To: Pedro Alves , gdb-patches@sourceware.org References: <20200914213112.19593-1-pedro@palves.net> <20200914213112.19593-2-pedro@palves.net> From: Simon Marchi Message-ID: Date: Mon, 14 Sep 2020 22:28:06 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20200914213112.19593-2-pedro@palves.net> Content-Type: text/plain; charset=utf-8 Content-Language: fr Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_STOCKGEN, SPF_HELO_PASS, 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: 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: Tue, 15 Sep 2020 02:28:09 -0000 On 2020-09-14 5:31 p.m., Pedro Alves wrote: > A later patch in this series will rewrite enum_flags fixing some API > holes. That would cause build failures around code using > type_instance_flags. Or rather, that should be using it, but wasn't. > > This patch fixes it by using type_instance_flags throughout instead of > plain integers. > > Note that we can't make the seemingly obvious change to struct > type::instance_flags: > > - unsigned instance_flags : 9; > + ENUM_BITFIELD (type_instance_flag_value) instance_flags : 9; > > Because G++ complains then that 9 bits isn't sufficient for holding > all values of type_instance_flag_value. > > So the patch adds an type::instance_flags() method, which takes care > of casting appropriately, and adds a separate type::set_instance_flags > method, following the pattern of the ongoing TYPE_XXX macro > elimination. This converts uses of TYPE_INSTANCE_FLAGS to > type::instance_flags() in the places where the code was already being > touched, but there are still many references to the > TYPE_INSTANCE_FLAGS macro left behind. Those could/should be fully > replaced at some point. Oh, thanks for doing this. I just pushed this to eliminate TYPE_INSTANCE_FLAGS. >From 10242f367fe102a4d55574c930ebfb389dbd233d Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 14 Sep 2020 22:22:33 -0400 Subject: [PATCH] gdb: remove TYPE_INSTANCE_FLAGS Remove it, use the `type::instance_flags` method everywhere. gdb/ChangeLog: * gdbtypes.h (TYPE_INSTANCE_FLAGS): Remove, replace all uses with `type::instance_flags`. Change-Id: I3653108b712e6186529cb0102e2b70247bbcabbe --- gdb/ChangeLog | 5 +++++ gdb/c-typeprint.c | 2 +- gdb/compile/compile-c-types.c | 6 +++--- gdb/compile/compile-cplus-types.c | 6 +++--- gdb/gdbtypes.c | 21 +++++++++------------ gdb/gdbtypes.h | 21 ++++++++++----------- gdb/stabsread.c | 9 ++++----- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0e6dec38b2ae..a68c1ab248a7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-09-14 Simon Marchi + + * gdbtypes.h (TYPE_INSTANCE_FLAGS): Remove, replace all uses + with `type::instance_flags`. + 2020-09-14 Michael Mullin * xml-tdesc.c [!defined(HAVE_LIBEXPAT)] (tdesc_parse_xml): diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index a07b29a95de8..d89c420add6b 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -528,7 +528,7 @@ c_type_print_modifier (struct type *type, struct ui_file *stream, address_space_id = address_space_type_instance_flags_to_name (get_type_arch (type), - TYPE_INSTANCE_FLAGS (type)); + type->instance_flags ()); if (address_space_id) { if (did_print_modifier || need_pre_space) diff --git a/gdb/compile/compile-c-types.c b/gdb/compile/compile-c-types.c index 6c9135947eac..585f6c89435b 100644 --- a/gdb/compile/compile-c-types.c +++ b/gdb/compile/compile-c-types.c @@ -278,9 +278,9 @@ convert_type_basic (compile_c_instance *context, struct type *type) { /* If we are converting a qualified type, first convert the unqualified type and then apply the qualifiers. */ - if ((TYPE_INSTANCE_FLAGS (type) & (TYPE_INSTANCE_FLAG_CONST - | TYPE_INSTANCE_FLAG_VOLATILE - | TYPE_INSTANCE_FLAG_RESTRICT)) != 0) + if ((type->instance_flags () & (TYPE_INSTANCE_FLAG_CONST + | TYPE_INSTANCE_FLAG_VOLATILE + | TYPE_INSTANCE_FLAG_RESTRICT)) != 0) return convert_qualified (context, type); switch (type->code ()) diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c index 2d4352f6c2c4..a0945683e474 100644 --- a/gdb/compile/compile-cplus-types.c +++ b/gdb/compile/compile-cplus-types.c @@ -1135,9 +1135,9 @@ convert_type_cplus_basic (compile_cplus_instance *instance, { /* If we are converting a qualified type, first convert the unqualified type and then apply the qualifiers. */ - if ((TYPE_INSTANCE_FLAGS (type) & (TYPE_INSTANCE_FLAG_CONST - | TYPE_INSTANCE_FLAG_VOLATILE - | TYPE_INSTANCE_FLAG_RESTRICT)) != 0) + if ((type->instance_flags () & (TYPE_INSTANCE_FLAG_CONST + | TYPE_INSTANCE_FLAG_VOLATILE + | TYPE_INSTANCE_FLAG_RESTRICT)) != 0) return compile_cplus_convert_qualified (instance, type); switch (type->code ()) diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 7ade2ccb533b..f1f4ec52c7bb 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -630,7 +630,7 @@ make_qualified_type (struct type *type, type_instance_flags new_flags, ntype = type; do { - if (TYPE_INSTANCE_FLAGS (ntype) == new_flags) + if (ntype->instance_flags () == new_flags) return ntype; ntype = TYPE_CHAIN (ntype); } @@ -753,7 +753,7 @@ struct type * make_restrict_type (struct type *type) { return make_qualified_type (type, - (TYPE_INSTANCE_FLAGS (type) + (type->instance_flags () | TYPE_INSTANCE_FLAG_RESTRICT), NULL); } @@ -764,7 +764,7 @@ struct type * make_unqualified_type (struct type *type) { return make_qualified_type (type, - (TYPE_INSTANCE_FLAGS (type) + (type->instance_flags () & ~(TYPE_INSTANCE_FLAG_CONST | TYPE_INSTANCE_FLAG_VOLATILE | TYPE_INSTANCE_FLAG_RESTRICT)), @@ -777,7 +777,7 @@ struct type * make_atomic_type (struct type *type) { return make_qualified_type (type, - (TYPE_INSTANCE_FLAGS (type) + (type->instance_flags () | TYPE_INSTANCE_FLAG_ATOMIC), NULL); } @@ -825,7 +825,7 @@ replace_type (struct type *ntype, struct type *type) /* Assert that the two types have equivalent instance qualifiers. This should be true for at least all of our debug readers. */ - gdb_assert (TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type)); + gdb_assert (ntype->instance_flags () == type->instance_flags ()); } /* Implement direct support for MEMBER_TYPE in GNU C++. @@ -2834,9 +2834,7 @@ check_typedef (struct type *type) move over any other types NEWTYPE refers to, which could be an unbounded amount of stuff. */ if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type)) - type = make_qualified_type (newtype, - TYPE_INSTANCE_FLAGS (type), - type); + type = make_qualified_type (newtype, type->instance_flags (), type); else type = newtype; } @@ -2862,9 +2860,8 @@ check_typedef (struct type *type) with the complete type only if they are in the same objfile. */ if (TYPE_OBJFILE (SYMBOL_TYPE (sym)) == TYPE_OBJFILE (type)) - type = make_qualified_type (SYMBOL_TYPE (sym), - TYPE_INSTANCE_FLAGS (type), - type); + type = make_qualified_type (SYMBOL_TYPE (sym), + type->instance_flags (), type); else type = SYMBOL_TYPE (sym); } @@ -4001,7 +3998,7 @@ check_types_equal (struct type *type1, struct type *type2, || type1->has_varargs () != type2->has_varargs () || type1->is_vector () != type2->is_vector () || TYPE_NOTTEXT (type1) != TYPE_NOTTEXT (type2) - || TYPE_INSTANCE_FLAGS (type1) != TYPE_INSTANCE_FLAGS (type2) + || type1->instance_flags () != type2->instance_flags () || type1->num_fields () != type2->num_fields ()) return false; diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 6b87de307bde..d28622d46cea 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -213,7 +213,7 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags); /* * Not textual. By default, GDB treats all single byte integers as characters (or elements of strings) unless this flag is set. */ -#define TYPE_NOTTEXT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_NOTTEXT) +#define TYPE_NOTTEXT(t) (((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_NOTTEXT) /* * Type owner. If TYPE_OBJFILE_OWNED is true, the type is owned by the objfile retrieved as TYPE_OBJFILE. Otherwise, the type is @@ -240,25 +240,25 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags); /* * Constant type. If this is set, the corresponding type has a const modifier. */ -#define TYPE_CONST(t) ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CONST) != 0) +#define TYPE_CONST(t) ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_CONST) != 0) /* * Volatile type. If this is set, the corresponding type has a volatile modifier. */ #define TYPE_VOLATILE(t) \ - ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_VOLATILE) != 0) + ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_VOLATILE) != 0) /* * Restrict type. If this is set, the corresponding type has a restrict modifier. */ #define TYPE_RESTRICT(t) \ - ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_RESTRICT) != 0) + ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_RESTRICT) != 0) /* * Atomic type. If this is set, the corresponding type has an _Atomic modifier. */ #define TYPE_ATOMIC(t) \ - ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_ATOMIC) != 0) + ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_ATOMIC) != 0) /* * True if this type represents either an lvalue or lvalue reference type. */ @@ -297,10 +297,10 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags); is instruction space, and for data objects is data memory. */ #define TYPE_CODE_SPACE(t) \ - ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_CODE_SPACE) != 0) + ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_CODE_SPACE) != 0) #define TYPE_DATA_SPACE(t) \ - ((TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_DATA_SPACE) != 0) + ((((t)->instance_flags ()) & TYPE_INSTANCE_FLAG_DATA_SPACE) != 0) /* * Address class flags. Some environments provide for pointers whose size is different from that of a normal pointer or address @@ -309,13 +309,13 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags); target specific ways to represent these different types of address classes. */ -#define TYPE_ADDRESS_CLASS_1(t) (TYPE_INSTANCE_FLAGS(t) \ +#define TYPE_ADDRESS_CLASS_1(t) (((t)->instance_flags ()) \ & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1) -#define TYPE_ADDRESS_CLASS_2(t) (TYPE_INSTANCE_FLAGS(t) \ +#define TYPE_ADDRESS_CLASS_2(t) (((t)->instance_flags ()) \ & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) #define TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL \ (TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1 | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_2) -#define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \ +#define TYPE_ADDRESS_CLASS_ALL(t) (((t)->instance_flags ()) \ & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL) /* * Information about a single discriminant. */ @@ -1684,7 +1684,6 @@ extern void allocate_gnat_aux_type (struct type *); TYPE_ZALLOC (type, \ sizeof (*TYPE_MAIN_TYPE (type)->type_specific.func_stuff))) -#define TYPE_INSTANCE_FLAGS(thistype) ((thistype)->instance_flags ()) #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 02fc8ccfd2b4..4b1e3b2857aa 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -4473,12 +4473,11 @@ cleanup_undefined_types_1 (void) if (SYMBOL_CLASS (sym) == LOC_TYPEDEF && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN - && (SYMBOL_TYPE (sym)->code () == - (*type)->code ()) - && (TYPE_INSTANCE_FLAGS (*type) == - TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym))) + && (SYMBOL_TYPE (sym)->code () == (*type)->code ()) + && ((*type)->instance_flags () + == SYMBOL_TYPE (sym)->instance_flags ()) && strcmp (sym->linkage_name (), type_name) == 0) - replace_type (*type, SYMBOL_TYPE (sym)); + replace_type (*type, SYMBOL_TYPE (sym)); } } } -- 2.28.0