From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 6cpjJSvDvmo1WCUAWB0awg (envelope-from ) for ; Thu, 01 Oct 2026 16:31:39 -0400 Received: by simark.ca (Postfix, from userid 112) id 9240A1E090; Thu, 01 Oct 2026 16:31:39 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id B34581E04F for ; Thu, 01 Oct 2026 16:31:36 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 51B754BB58D6 for ; Thu, 1 Oct 2026 20:31:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 51B754BB58D6 Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 10BEE4BB24DD for ; Thu, 1 Oct 2026 20:31:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 10BEE4BB24DD Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 10BEE4BB24DD Authentication-Results: sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790886673; cv=none; b=srGX05+9NIbTA3ZACR9LZB4AvJ1ev/oxAT6b572O0zIi/rfajTHAlDIm1FopOfMRF0JYuKWlNJjQT+0A+yG8itUFyuXjhpo7skf7dWtiwMn21meFQxCFF7iFe+zLjjowFjX3E6flxVWQHlY5vAEcZGSo4YyXrRRbp9Wma038Snw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790886673; c=relaxed/simple; bh=4Yfp0fg9ScGXxHKhiVTK79Ueco1Qeq8q7GbESlACDc8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=qqBX+LhcF4yJFQ3STSodjEm2nqfe7nXZTMC9pdJxsq+NbcicO46f3OAE9LYc4cuYcO3unAfe90ssGddwfebaWA8YyO0SbkJcy0mkdMrRIlYzvWNm+iB2eCa3gx81rDzogIjerw88my96IdXXaMJ7kqjIb/J3dvy+xpnrdiZUo7Y= ARC-Authentication-Results: i=1; sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 10BEE4BB24DD Received: by simark.ca (Postfix) id B51391E04E; Thu, 01 Oct 2026 16:31:11 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 1/7] gdb: convert QUAL_* macros into an enum_flags Date: Thu, 1 Oct 2026 16:29:59 -0400 Message-ID: <20261001203105.1379971-2-simon.marchi@efficios.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261001203105.1379971-1-simon.marchi@efficios.com> References: <20261001203105.1379971-1-simon.marchi@efficios.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Replace the QUAL_CONST / QUAL_RESTRICT / QUAL_VOLATILE macros with an enum plus an enum flags_type. Use it where applicable. Note that the value stored on the parser's union is the raw enum, not the enum_flags type. enum_flags has a user-provided default constructor (to initialize it to 0), which would make the generated YYSTYPE union's default constructor deleted. The d_qualify helper function accepts the enum_flags type though. Change-Id: Ib146f6db66c849ac2f0ee575a98bff7b90d5e17c --- gdb/cp-name-parser.c | 4 ++-- gdb/cp-name-parser.h | 21 ++++++++++++++------- gdb/cp-name-parser.y | 11 ++++++----- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/gdb/cp-name-parser.c b/gdb/cp-name-parser.c index d04ed3594878..569d102213c8 100644 --- a/gdb/cp-name-parser.c +++ b/gdb/cp-name-parser.c @@ -110,8 +110,8 @@ cpname_state::make_name (const char *name, int len) may already be qualified; duplicate qualifiers are not created. */ struct demangle_component * -cpname_state::d_qualify (struct demangle_component *lhs, int qualifiers, - int is_method) +cpname_state::d_qualify (struct demangle_component *lhs, + qual_flags qualifiers, int is_method) { struct demangle_component **inner_p; enum demangle_component_type type; diff --git a/gdb/cp-name-parser.h b/gdb/cp-name-parser.h index 31b2227227fc..7585379f5be2 100644 --- a/gdb/cp-name-parser.h +++ b/gdb/cp-name-parser.h @@ -21,16 +21,11 @@ #define GDB_CP_NAME_PARSER_H #include "demangle.h" +#include "gdbsupport/enum-flags.h" union cp_name_parser_YYSTYPE; struct demangle_parse_info; -/* Flags passed to cpname_state::d_qualify. */ - -#define QUAL_CONST 1 -#define QUAL_RESTRICT 2 -#define QUAL_VOLATILE 4 - /* Flags passed to cpname_state::d_int_type. */ #define INT_CHAR (1 << 0) @@ -46,6 +41,18 @@ struct demangle_parse_info; namespace cp_name_parser { +/* Type qualifiers, passed to cpname_state::d_qualify. */ + +enum qual_flag +{ + QUAL_NONE = 0, + QUAL_CONST = 1, + QUAL_RESTRICT = 2, + QUAL_VOLATILE = 4, +}; + +DEF_ENUM_FLAGS_TYPE (enum qual_flag, qual_flags); + /* State of an ongoing parse. */ struct cpname_state @@ -100,7 +107,7 @@ struct cpname_state struct demangle_component *make_name (const char *name, int len); struct demangle_component *d_qualify (struct demangle_component *lhs, - int qualifiers, int is_method); + qual_flags qualifiers, int is_method); struct demangle_component *d_int_type (int flags); diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 57247f459fab..b41ca6b30a20 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -60,6 +60,7 @@ int fold_flag; } abstract; int lval; + cp_name_parser::qual_flag qual; const char *opname; } @@ -84,7 +85,7 @@ %type nested_name -%type qualifier qualifiers qualifiers_opt +%type qualifier qualifiers qualifiers_opt %type int_part int_seq @@ -518,16 +519,16 @@ function_arglist: '(' function_args ')' qualifiers_opt %prec NAME /* Should do something about DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL */ qualifiers_opt : /* epsilon */ - { $$ = 0; } + { $$ = cp_name_parser::QUAL_NONE; } | qualifiers ; qualifier : RESTRICT - { $$ = QUAL_RESTRICT; } + { $$ = cp_name_parser::QUAL_RESTRICT; } | VOLATILE_KEYWORD - { $$ = QUAL_VOLATILE; } + { $$ = cp_name_parser::QUAL_VOLATILE; } | CONST_KEYWORD - { $$ = QUAL_CONST; } + { $$ = cp_name_parser::QUAL_CONST; } ; qualifiers : qualifier -- 2.55.0