From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 8RpNG0zDvmo1WCUAWB0awg (envelope-from ) for ; Thu, 01 Oct 2026 16:32:12 -0400 Received: by simark.ca (Postfix, from userid 112) id 6C7051E04F; Thu, 01 Oct 2026 16:32:12 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::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 8BE791E047 for ; Thu, 01 Oct 2026 16:32:11 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8DBCB4BB3BCE for ; Thu, 1 Oct 2026 20:32:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8DBCB4BB3BCE Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id D77294BB24D6 for ; Thu, 1 Oct 2026 20:31:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D77294BB24D6 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 D77294BB24D6 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=1790886672; cv=none; b=mgrvRLorAGWtHueUtULORo6waLCuG+ul92n8hCuifg3noHcRRdPYphfqagtZt+LnrxNUNETHJV0riPyIxb4lesqjv+DbkQ9XTFF1YCOGkAeaEaoz6klTsEiMcE6g9FuHMZkz7qv0YOWkNsVUjpyHfW4DNitaQTEGNfegEgbOREY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1790886672; c=relaxed/simple; bh=sjoI1JhpkD34IoMD9xmVx3IwSb8E0MTU/Fe7jauUuO8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Zrb5MXojr9Le0CCLNA+QAs6hqG5SUa4HBkZlowhdRMxeBCtI8bR1qJ8kAVhpsbGByjwGlQAUfb89MC/f0AqIw9IuoOh1BJOT9D5NiDWs9A4Wku+HAAtuyKuUPi5rXUG+befbHu7xKlO7UShyeuVCD2pUpQKhvfA2KprGhoyLrgU= ARC-Authentication-Results: i=1; sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D77294BB24D6 Received: by simark.ca (Postfix) id DF2DF1E04F; Thu, 01 Oct 2026 16:31:11 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 2/7] gdb: convert INT_* macros into an enum_flags Date: Thu, 1 Oct 2026 16:30:00 -0400 Message-ID: <20261001203105.1379971-3-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-Type: text/plain; charset=UTF-8 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 Same as the previous patch, but for the INT_* macros passed to cpname_state::d_int_type. Add an INT_NONE enumerator, since a raw enum value can't be assigned 0: CXX cp-name-parser-gen.o gdb/cp-name-parser.y: In function ‘int cpname_yyparse(cp_name_parser::cpname_state*)’: gdb/cp-name-parser.y:544:67: error: invalid conversion from ‘int’ to ‘cp_name_parser::int_flag’ [-fpermissive] 544 | { $$ = 0; } | ^ | | | int Change-Id: Ia4e8b576adfd5b3baa3fb4c4beda2517d1d87449 --- gdb/cp-name-parser.c | 4 ++-- gdb/cp-name-parser.h | 27 ++++++++++++++++----------- gdb/cp-name-parser.y | 19 +++++++++++-------- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/gdb/cp-name-parser.c b/gdb/cp-name-parser.c index 569d102213c8..6615efd6abb1 100644 --- a/gdb/cp-name-parser.c +++ b/gdb/cp-name-parser.c @@ -147,7 +147,7 @@ cpname_state::d_qualify (struct demangle_component *lhs, /* Return a builtin type corresponding to FLAGS. */ struct demangle_component * -cpname_state::d_int_type (int flags) +cpname_state::d_int_type (int_flags flags) { const char *name; @@ -162,7 +162,7 @@ cpname_state::d_int_type (int flags) case INT_UNSIGNED | INT_CHAR: name = "unsigned char"; break; - case 0: + case INT_NONE: case INT_SIGNED: name = "int"; break; diff --git a/gdb/cp-name-parser.h b/gdb/cp-name-parser.h index 7585379f5be2..083631f20a67 100644 --- a/gdb/cp-name-parser.h +++ b/gdb/cp-name-parser.h @@ -26,16 +26,6 @@ union cp_name_parser_YYSTYPE; struct demangle_parse_info; -/* Flags passed to cpname_state::d_int_type. */ - -#define INT_CHAR (1 << 0) -#define INT_SHORT (1 << 1) -#define INT_LONG (1 << 2) -#define INT_LLONG (1 << 3) - -#define INT_SIGNED (1 << 4) -#define INT_UNSIGNED (1 << 5) - #define d_left(dc) (dc)->u.s_binary.left #define d_right(dc) (dc)->u.s_binary.right @@ -53,6 +43,21 @@ enum qual_flag DEF_ENUM_FLAGS_TYPE (enum qual_flag, qual_flags); +/* Integer type specifiers, passed to cpname_state::d_int_type. */ + +enum int_flag +{ + INT_NONE = 0, + INT_CHAR = 1 << 0, + INT_SHORT = 1 << 1, + INT_LONG = 1 << 2, + INT_LLONG = 1 << 3, + INT_SIGNED = 1 << 4, + INT_UNSIGNED = 1 << 5, +}; + +DEF_ENUM_FLAGS_TYPE (enum int_flag, int_flags); + /* State of an ongoing parse. */ struct cpname_state @@ -109,7 +114,7 @@ struct cpname_state struct demangle_component *d_qualify (struct demangle_component *lhs, qual_flags qualifiers, int is_method); - struct demangle_component *d_int_type (int flags); + struct demangle_component *d_int_type (int_flags flags); struct demangle_component *d_unary (const char *name, struct demangle_component *lhs); diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index b41ca6b30a20..4b4be60f4fba 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -61,6 +61,7 @@ } abstract; int lval; cp_name_parser::qual_flag qual; + cp_name_parser::int_flag int_type; const char *opname; } @@ -87,7 +88,7 @@ %type qualifier qualifiers qualifiers_opt -%type int_part int_seq +%type int_part int_seq %token INT %token FLOAT @@ -540,22 +541,24 @@ qualifiers : qualifier invalid output for them - an error would be better. */ int_part : INT_KEYWORD - { $$ = 0; } + { $$ = cp_name_parser::INT_NONE; } | SIGNED_KEYWORD - { $$ = INT_SIGNED; } + { $$ = cp_name_parser::INT_SIGNED; } | UNSIGNED - { $$ = INT_UNSIGNED; } + { $$ = cp_name_parser::INT_UNSIGNED; } | CHAR - { $$ = INT_CHAR; } + { $$ = cp_name_parser::INT_CHAR; } | LONG - { $$ = INT_LONG; } + { $$ = cp_name_parser::INT_LONG; } | SHORT - { $$ = INT_SHORT; } + { $$ = cp_name_parser::INT_SHORT; } ; int_seq : int_part | int_seq int_part - { $$ = $1 | $2; if ($1 & $2 & INT_LONG) $$ = $1 | INT_LLONG; } + { $$ = $1 | $2; + if ($1 & $2 & cp_name_parser::INT_LONG) + $$ = $1 | cp_name_parser::INT_LLONG; } ; builtin_type : int_seq -- 2.55.0