From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PU1-obe.outbound.protection.outlook.com (mail-eopbgr1320100.outbound.protection.outlook.com [40.107.132.100]) by sourceware.org (Postfix) with ESMTPS id 9441D3858435 for ; Sat, 28 Aug 2021 12:06:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9441D3858435 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cipunited.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cipunited.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KEjnx6vxY6wDocQuNuyp1scPhqMYDVoQwx6IeJ1/klMV0Hnqj4z5LIaESX3K2ef1CLLa4vI8zmU7qHdgXqNnHtq2AJBB6SVeX5AWtYLAwlzqo8IAHAQ/1yDvyTEhrZZUcoaFp/91Sz+95S1pEHtyVsjITV/UgJvcxArcjytKFynsdLZ4Ulv9J5se0dLYkV9OOkrgj3dKqXTKZ/gjCIIti2nJFv424SwAHCERJrQqWF84pZDheMEVi8VkfD62m6KNJZFywsc8qZKGQvu11dCdq4hEasZuCU/BVc+/g4r4riYAkQJJFe5u+69iqz1Y1Y8JhmDKH5SV/Yau0Nz5/AgclA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=39jHEsBa2PUUFiWsBW19qQ/CLL1Mf7P6LnWBQJPHh84=; b=h9bUv0preZNGSETiEksAlaTi1A4bW2cct6SRG847BD0rvUpLb8oI5dBsGR2E7bv1INiCeL3ZsRq8xJC0TiO0bFHr4kuxOrDhLOdH8+QkU2bbAdfr8QbkJkAWO3mKOGKGffI1g+6iQWNM4WC7G0wrQZPmedRSAssdTJynfQqYw2r6a/nA0XH28luAKsjPQTuaKcLMg/NjisanXLtuczAhGw0gMUrUewoscZPSsDCpQkVvEbtwvZItU6jGPmAhUWy623qNGtBbwXnQLYkrNX8eiImA2iV1iJ9rR76i/0ZydCn9E/6T6SHB3+vPNU5srvLjL2+wtzpXLNPEzWwIHR1rpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cipunited.com; dmarc=pass action=none header.from=cipunited.com; dkim=pass header.d=cipunited.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cipunited.onmicrosoft.com; s=selector1-cipunited-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=39jHEsBa2PUUFiWsBW19qQ/CLL1Mf7P6LnWBQJPHh84=; b=wTQ13e71fOA3gG6o6LuUPNTahnD4U9LPA84FvQobwDdANPRJfoOevYB4uPZEmHrrF3WBqyn0xd4ybdaRBfJYPbG5YKPIQhZnfkquVsvu5uI2Sjsz/7ybDzSrGojHKhovMYxq9rkchvKnFDjzd6FicuA1DpE/q3LGo2l53b9CX5U= Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=cipunited.com; Received: from HKAPR04MB3956.apcprd04.prod.outlook.com (2603:1096:203:d5::13) by HKAPR04MB4065.apcprd04.prod.outlook.com (2603:1096:203:dc::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23; Sat, 28 Aug 2021 12:06:38 +0000 Received: from HKAPR04MB3956.apcprd04.prod.outlook.com ([fe80::acc9:82fe:c04:97f9]) by HKAPR04MB3956.apcprd04.prod.outlook.com ([fe80::acc9:82fe:c04:97f9%6]) with mapi id 15.20.4436.027; Sat, 28 Aug 2021 12:06:38 +0000 From: YunQiang Su To: gcc-patches@gcc.gnu.org Cc: syq@debian.org, xry111@mengyan1223.wang, YunQiang Su Subject: [PATCH 1/3] md/define_c_enum: support value assignation Date: Sat, 28 Aug 2021 08:05:47 -0400 Message-Id: <20210828120549.263010-1-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: HK2PR02CA0162.apcprd02.prod.outlook.com (2603:1096:201:1f::22) To HKAPR04MB3956.apcprd04.prod.outlook.com (2603:1096:203:d5::13) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2001:da8:20f:4435:feda::b016) by HK2PR02CA0162.apcprd02.prod.outlook.com (2603:1096:201:1f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.19 via Frontend Transport; Sat, 28 Aug 2021 12:06:37 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d9e5d300-7491-4243-b0b3-08d96a1c49eb X-MS-TrafficTypeDiagnostic: HKAPR04MB4065: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RsjAbbFYSz/vEc9EnHlTOSCGdPEkm2IeMih/v24SiXJODBYNBrfXFSkhZCW3kZe5UhHFg4w+sa8isWkngOgCTb9gbjyGePosZV0/L8Ww0+g+tuoVPxAPUcM8P2lj5MuvtBVAj23rHg5COZX2yETRId1JJYgQff4XSy3TSomOmAL0qBUuNowLIB6jJ0cGw+I5DCWnaxisJEBjhXVvQKXRHQkv6cUQ+rqw8olQ7dvwdOcpue9aTH+Crueqs51j6sjZi0sW3VWm1L36xBoHB9lg+4cwEct7hYuvYr8gAMu/J1kEkyA0MO+FO2Y8iIJcSSVUV+blk2DGb7nNCaCH4qHE9RldBjoWaIHhTZESSWzyA35f9hDcFNkhyRsiJHowpUVdqQAz0p1OC4okJvjNsddOICl4XwprQPspFqFsuNka+KNChHLzTHsy0w6vy6sxUYg7zp+NxoQkQI7xY8rIbe/k+G6EWNfsFgucTy8Dp2Bh000P75DZvgPR3+JeLhTMU65xitcKY9oTShDo2v51+8FydgzgB1XTGJTNiniyAtItgBJJ/LP7dDmbJlZDDU0LUh9VTFlk2axjTsrVg887mxnGl/i/Ni4SohRSJco0C+w+tK48HcuP2ZUFu9u6oHyyPUGm7wLD06HPFRXeSFIC9Gzapg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:HKAPR04MB3956.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(39830400003)(396003)(346002)(376002)(366004)(1076003)(6916009)(508600001)(36756003)(86362001)(8936002)(5660300002)(2616005)(316002)(6512007)(6666004)(52116002)(83380400001)(6506007)(66476007)(6486002)(66946007)(4326008)(38100700002)(66556008)(186003)(8676002)(2906002)(107886003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4oovlRZcmtWFo/01IS1YHONGk9056ZVYcKk1HzkZ22yRCoCSwL8noLfD7Oyh?= =?us-ascii?Q?1iOiIj2qFGy0HQFc5mak6Da1P3w6A3085PH1aKqOVvlyg9oTEBx+aVsWpSZm?= =?us-ascii?Q?+bjQ/5E9xBWXgCn6O7EUpIKX5qb+YOomEuzxK0cORZnNzkmHqKfCHKPPfnA5?= =?us-ascii?Q?FWHDvLBlFQJcwgVhhKBFQ4QAQ0q9hRsYYx3fMy+SPrnn4O53bH/gyvSx8uv8?= =?us-ascii?Q?n0HRWS6m6R9BTV1axjGLb1zgnYEJCiedJRamDkoRWLGBz59EAQjo5kGVykUg?= =?us-ascii?Q?iJr3qU+NJ1opNARTPRIS0Mi38AEgwqdtO+9ARWuFO1fefbp+weI3EouVwZHQ?= =?us-ascii?Q?7nNf65S9O56w1/+kIzeNIZnfhXfFmMnoeVpuTJNkH+wSFwmjyFZCmQTbI10c?= =?us-ascii?Q?reM5Efse9ksWnBaCM0xtYWxHVzhnSTl2KhGTJD4SdB7+gzq5L28BgnjHnpFn?= =?us-ascii?Q?jf7JzfxitQPGOAYjcTnKdAKp1QJOAbtw+DLx2vjN+udJbacJfbtkG41xFE25?= =?us-ascii?Q?D8EpFJKIwVjjQ+OdZHoWkyFvk9v5YZH6Rk96UkcGuEYXZlnJibJA1IbDzjRM?= =?us-ascii?Q?zZHHlEZlWSWCIOzQUgD4c25RhwSd8iSKzzvxefo0a6IdafLnwLZFROBi3MAZ?= =?us-ascii?Q?n2cjqZRvSEsLnAl/aKk80HD8/zMbYtsl43Gw7Z8/eXh3mrmLn0T5hVTluIl+?= =?us-ascii?Q?3OKM0FW4BJabfwHBt+bHumvf0U/QHOn3WT7w4L3KnKlizAUVsrFuL9Ij4nGZ?= =?us-ascii?Q?96yln/joojcxpTVA5Poqz29NklRpszajdSssyB8h2mvBSCS9ZU7+yvRkG5DM?= =?us-ascii?Q?rV6mNMNe5dbl+09IrPG7OmVkAMMdIjEMIJkj6N1JqoWtBJ6NiBMtad2NEgBa?= =?us-ascii?Q?fXuLa65zbr2wOCEb61KyVeqBca0Llb5yJQ2Y6Zw9EMZnaEdYpyBkRNEYdHBy?= =?us-ascii?Q?raAWtUBTCpYSchBU5+CZD5QvurId3ckOAC4jGwUsMzT4MfMFwoC7cPByYA6n?= =?us-ascii?Q?3r42LUzxLYNuXBmg3h6CYbeFMGWxicNpntcZT2eNSYnkj9DsE672xKZvJ2yv?= =?us-ascii?Q?7mzv2bUY0oyP2UhYyvvDsCBRENPP2ysm6qabaOzteSfkdUgQDW480s31XZFc?= =?us-ascii?Q?8PodBcHhKWUKib7ZjZeOq57JUFeG5yK6s8eadoJ1IbRH11P8mbnQsu1gXept?= =?us-ascii?Q?o9+Pnw+DIK4yF1tOkQJRnDugM+G0WXooStHCHom1RERiXNcjBqRUJMl+Ufoi?= =?us-ascii?Q?GqV8injqcbCWZKfTymToSWpVrENkc2LOwBCgiHvIcmM2m1QcJhaxzNGD9U/3?= =?us-ascii?Q?n7kIhSXk2Ss56tx+E+OSIQ34xl1EquDGULurq2EEiwAx6yHbb5Z7rYP1zeMn?= =?us-ascii?Q?wDooSUU=3D?= X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9e5d300-7491-4243-b0b3-08d96a1c49eb X-MS-Exchange-CrossTenant-AuthSource: HKAPR04MB3956.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Aug 2021 12:06:38.2891 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e31cf5b5-ee69-4d5f-9c69-edeeda2458c0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bBIBV8iS65pUkwh9zWc5Vz7TVCtLQcj+up3X24yapstXdWgtarkNBeXImsIecADEkAh1U22rZmBZ3GwNvT7tqo0aAOjyy0S4PU5xxRLkOTY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HKAPR04MB4065 X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, MEDICAL_SUBJECT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_PASS, TXREP, T_SPF_HELO_TEMPERROR, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Aug 2021 12:06:54 -0000 Currently, the enums from define_c_enum and define_enum can only has values one by one from 0. In fact we can support the behaviour just like C, aka like (define_enum "mips_isa" [mips1=1 mips2 mips32=32 mips32r2]), then we can get enum mips_isa { MIPS_ISA_MIPS1 = 1, MIPS_ISA_MIPS2 = 2, MIPS_ISA_MIPS32 = 32, MIPS_ISA_MIPS32R2 = 33 }; gcc/ChangeLog: * read-md.c (md_reader::handle_enum): support value assignation. * doc/md.texi: record define_c_enum value assignation support. --- gcc/doc/md.texi | 4 ++++ gcc/read-md.c | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index f8047aefc..1c1282c4c 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -11074,6 +11074,8 @@ The syntax is as follows: (define_c_enum "@var{name}" [ @var{value0} @var{value1} + @var{value32}=32 + @var{value33} @dots{} @var{valuen} ]) @@ -11086,6 +11088,8 @@ in @file{insn-constants.h}: enum @var{name} @{ @var{value0} = 0, @var{value1} = 1, + @var{value32} = 32, + @var{value33} = 33, @dots{} @var{valuen} = @var{n} @}; diff --git a/gcc/read-md.c b/gcc/read-md.c index bb419e0f6..43dfbe264 100644 --- a/gcc/read-md.c +++ b/gcc/read-md.c @@ -901,7 +901,8 @@ md_decimal_string (int number) void md_reader::handle_enum (file_location loc, bool md_p) { - char *enum_name, *value_name; + char *enum_name, *value_name, *token; + unsigned int cur_value; struct md_name name; struct enum_type *def; struct enum_value *ev; @@ -928,6 +929,7 @@ md_reader::handle_enum (file_location loc, bool md_p) *slot = def; } + cur_value = def->num_values; require_char_ws ('['); while ((c = read_skip_spaces ()) != ']') @@ -945,20 +947,29 @@ md_reader::handle_enum (file_location loc, bool md_p) if (md_p) { value_name = concat (def->name, "_", name.string, NULL); + value_name = strtok (value_name, "="); + token = strtok (NULL, "="); + if (token) + cur_value = atoi (token); upcase_string (value_name); ev->name = xstrdup (name.string); } else { value_name = xstrdup (name.string); + value_name = strtok (value_name, "="); + token = strtok (NULL, "="); + if (token) + cur_value = atoi (token); ev->name = value_name; } ev->def = add_constant (get_md_constants (), value_name, - md_decimal_string (def->num_values), def); + md_decimal_string (cur_value), def); *def->tail_ptr = ev; def->tail_ptr = &ev->next; def->num_values++; + cur_value++; } } -- 2.30.2