From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2062.outbound.protection.outlook.com [40.107.21.62]) by sourceware.org (Postfix) with ESMTPS id 2B9FE3858D28 for ; Fri, 6 Jan 2023 12:34:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2B9FE3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PgJUokexA+YZzoRQ8wBs9Rvmn4XXcmB1Svnv/OOmIG0wp2EGCQZiavQOFCpOoJJgEIL2job9JeN4FJd3b+6uHBGSuYUhzaRN5nZrN2xuFn1UA71dH+x0INc6Pp0rmxTFQpCr2qkUDLcUuTzum3HX2qLZCd0wAR/1OHnRgjDa/3oeJJ3/DwbXqrQHit7ilbRiUZL7pWh3fRVoka6rUMyIAzqJ0/2PhATNuGlsLjM2ftJxAfSnxYXl0Z4Sm61E6ezuB7Wtnt0T9IifNPXWrUoilHE8xmbJBMhLLLEhMkuihMLxenpQdviGJ9joVwR+nSRbAQRtmtcL/lSIkdSHr+YLUA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=L456gopRElc+pFkVC/yX+Skkx4J8WFmdCwIVTsoM4yk=; b=Rmivi/yCWuLau+HJMlN5qMiUqVPK1IiR7GG/kmCb5/gzn4jECPwxvYrA2OQkW+tagKuoItMa4y7F6MQg0Eg7w1QS7FduWIDSvhdDFFxenhIAzElNPczGQk+GT6blQVHfcZWxlt/E/bKLWzeS7PcbcmBYQiZA3PMwfyAXt17NAQbe5SWf8gYB/sIuJozmzFxAqSLsPixt8vh7j44M1UxnH79Cp6YAC/i5dliMQq4lA9+e1gw6pM95P+IU0zvkODYHde3JYQIiEqPyXSNFI662WBjckdlvXsOflSsl4G+7IQJAEcIFERYGN0mFYbM9mJvUWlchkVIuXIm05zu8iM3Law== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L456gopRElc+pFkVC/yX+Skkx4J8WFmdCwIVTsoM4yk=; b=sgkgTHMg/lhZkjz1ognpjRvvm7syeZd1vWODQ1nwQIA9Zj+6Uityt++0SYtNLAtZ8jSQ6hpTGSNybsLHU4nUeBk+j2hkgNiPYEHIzrpkinWaeol9Ka0zDLbTlZkHR7pxy1b9TBoLwVJjqnVDViajyzju6SPyAOCIVuvBoN6KKDN9AazW//f4XRUBnjqgd4XcV5SnUQpj8WOLqeetBwmNS20eoDBNwg3sV1M89EWAcknH8+UdAjp25UKWAcfJxye8XhFgC0+MkA55pQvyb2XHna8SRS08V19QjssOIKSqzQ+Pdj41NRepknVFT5VI5oOU03ylXPS1Heh4OUEPja1DMw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS8PR04MB7894.eurprd04.prod.outlook.com (2603:10a6:20b:2aa::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Fri, 6 Jan 2023 12:34:48 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.5944.019; Fri, 6 Jan 2023 12:34:48 +0000 Message-ID: <6c9f38b9-c582-3a1a-55ce-bb9966940a80@suse.com> Date: Fri, 6 Jan 2023 13:34:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: en-US To: Binutils Cc: Palmer Dabbelt , Andrew Waterman , Jim Wilson , Nelson Chu , Aurelien Jarno From: Jan Beulich Subject: [PATCH] gas/RISC-V: adjust assembler for opcode table re-ordering Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0016.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::21) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB7894:EE_ X-MS-Office365-Filtering-Correlation-Id: 464db6df-49f0-404f-105e-08daefe2660e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RgiG2j2ovTre50ZHa4Logl2M1JU2KkicZNTRcKrUbVVu2rgEX3CQz5JV8OMjV7y8KFibrfHbWtNRRbqo8t4qGdrA6Oc2BrdAmC5z1jqRt19bO6IbYjhGkYGa1LMetkKJ7jlcgwFSog6Zu4J3KyuqZGBkqSv00tSE2oR2B2spWC/+DEQC5k7hXn+jNjP2fwLV7gL5WXQcaF2YkrZnOP+muE8iMzLyRE48nltN210wK6T8FAGGygAEiSG8VUe7L0PalC/ay6RwC+XQFmSN+aIeaiO6SEDQPX+n3/jXUBBnwp+++77SgWbRjg4jd9ZX55fVaoM0w0xzAfanE6/ptc3lI1V+qQIu1HKUvw1/G6Qs0ms513xo4OEGLVbdat7m36MRYqmoLJmdaosTdU8BOwuy5IRmtJu67KxUtTsnzYliAbgr5qiyokxFQIakGhv/6ZvkXoC5G2QZHzVusL53ec8mHZ57z96TQN2jeWSHr8iG+z1LuXv60zZYRFidDKKnbyvdf6ZgrBaw4CIrurNseKrPFboQq4kDUq2An759M6eqsgvoNx/eQe6WkUCVp4jiHZcI9F8BP0eGpQzgbuUipoMeAuZuvcFvhxk1+SLb29STrxNXQ82QkTQg01F7X/hvwb5uvmTF0XSgLp4j2uXkvVOfB9eWZe0e6idsjJr8YYI5D4jki50x5XqIePPC6TgnOsrcwcQurB3p9A6cVV9L2kCd7HMT3zL2r0ndtfY8iLHUmac= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(346002)(39860400002)(136003)(366004)(451199015)(83380400001)(186003)(26005)(6512007)(6506007)(86362001)(31696002)(36756003)(2616005)(38100700002)(4326008)(8676002)(31686004)(41300700001)(6486002)(2906002)(5660300002)(8936002)(478600001)(6916009)(66556008)(316002)(66946007)(66476007)(54906003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QlVSek1pdXZZMmk2SU1BdG44VkNjcFAyQlQwbkhJdG41bWxSWVN6MjBBRmsy?= =?utf-8?B?SXVaS3Y1emN0bmo3dW9TbU5pSWE2UXpoRHMra3krYXViR0Z0WklibkFJK1l0?= =?utf-8?B?bG9ia0cxNXBsVEtKYkJXZGdiaklsaXJVUk8xMFUrUEtHVThBZXZMUG9sOHhB?= =?utf-8?B?RkFLMkVEcEF0OFJ4VS9vb3cxeDZUeVVvbXY4OUx4YVRFWTNJdUhMeHNOQmtm?= =?utf-8?B?QUNRUCt0c1UyOTlGRVJJYnJNWGIwMEpNQUNlMFJaRkl3dlp0dC9YMUNXYXNr?= =?utf-8?B?MEZ6ZDRuSEpibzdnVTZGMEkwaUViNko0cG1MVEpwMDE5cmZDaG85VWpvYURV?= =?utf-8?B?d1E3b0RRYzlOQ0RUR2dQSjA2TzY3WUQybUhmVTh1ejZ0SVMzRjVEekw0bldB?= =?utf-8?B?VU1jamd0cTA1Nm0zak56YnNhbW5zbVd2Y2h5RjJtaVJHYU0vWE9MK2R5dW9Q?= =?utf-8?B?Tk9DcVQ2d2orYUJ4Zzk2dnBxZEZsdW0zSmhnRTJjenVYOHM3WkhiWi9UcTFX?= =?utf-8?B?eDc3eThzM3hORUN6TzRSeUU3dGFoQmkxOUVUWDQ3TnVHQmpEUk4wVUxOVVRq?= =?utf-8?B?S21HU1o3NXA1eGlLNVJKRFN6TGlKc001RXU1aWN3VFBUNW1YUVdKeGxWZk95?= =?utf-8?B?eHNEdkE1andBVHY4UEk3MFFUcTVFZHNvbDJRcFFNT0hiYlhua2lHeGtveVFJ?= =?utf-8?B?aDNFVlV4MVpUYWRxZGFkWVdwOWVyemVjL0gyK3g2SWpqQUlrT04ycTU4OWRp?= =?utf-8?B?SHJDdnVUMHBqWDhuaFoxbzZEVWphT1JSdTN6Y0ExdHlJd2ppMlFaZ2kyZHJz?= =?utf-8?B?SGlDeTV3bFJHd3FraUdidG05WDJTRWZTVjQ3TXR3cmlWVTFUR0tTdGNWTVk2?= =?utf-8?B?UUNOQThaZHVqdFE1N1lPSVRLQ2gwUkYyUXRSSFYxd2Ewc2t4MDJHU0xSNFRn?= =?utf-8?B?d0xLeU1NRWh1eHF3WmdPNWJmN2NRdTUwOEZPMUlBem1ieU05WEd5NGVyOU5R?= =?utf-8?B?dVU2US9oSmlnQStqRnJvQmk3WklhRVpvZ005eHFHSEpzQUFyUURtYndoWkV3?= =?utf-8?B?K0hqZWlDQ3pMM040clVZdHppRDd4NG1uNFYwYWlVR3lxdXEzcXlOTW9zUk1F?= =?utf-8?B?Y0hEdGhIQ0ZVMUFOOXRsMXdFTXlPeWlLSGN0clI1UGVPOXA4eExXOU9ieEto?= =?utf-8?B?eTByNW1yNEdQdy92cFM1THp1WVlNdXVkZ0dNMm9tcnZKSGFCSzZ5d0x4TlVp?= =?utf-8?B?QVozQzVCZlo5bFNiWEI0emh6OGNGWVJsQ1duREhvOW9BWTJSeHFLMDRiTE93?= =?utf-8?B?dmtrVTAxQ2Vld1JxSitsNHBjaTJzeHNxaG9iV0QwTU1uRkJOeWliNFY2eHcy?= =?utf-8?B?MGN6YXRBanlwT3VqM0NsQlIzUFVOd1ovN2VFZGZEYXFPODdVQS9IT0pvWVNU?= =?utf-8?B?L3RBVmdaL2FETDlTSlNscWsyeStER1ZuZ2E5NDhvZTB5eElCLzhUSTRhQ2dr?= =?utf-8?B?L200SVY3MEphL2dLbmRTa2hBN3lwWmFHVW1tdldNSVRXclJBbGc3cHVoYUNQ?= =?utf-8?B?NUtBT3NDREdhdVdrajhxbW1DS0FEWnUxMlRYNk9FWkRna2JrWXZaSkJjUVlr?= =?utf-8?B?WDVSd2lYRUJ4UldwUXRrYXNzNWtDd1RuaDR4amw3VjdrK2lERFNid01MUm1N?= =?utf-8?B?Qmp1RkkyT0NuVkIxVCtlSkpiNzVjQjB4TFNacXdUQ0Rqb2l5bndpM2ZubEdE?= =?utf-8?B?M0dmZ1JmT3VIdHZYZlJ0QzcydU10T1A0bFMwcjRyZi9YOE9qam1DTmkrY3BR?= =?utf-8?B?Q2tTSEZ0ejV1OWFlL0k1V01HUDR6amF3TDNPeTRlK2MvWmdCL25Hei9qY3dL?= =?utf-8?B?RGZRUlNsVHkwa1hsdnNCd3c3c2NyQVFnVW85T1dpaU41MkhONUlHVzlhN1Ew?= =?utf-8?B?V1NDUGJEQXJtUGVqcG1wNmNxVHhsQ0hCd2sweit3bEIycXRCSjBzcjExNEsz?= =?utf-8?B?WU1KSTRZR2dHcDlkcUVWZlQ2ZUlqY1E1QmhVQnYvL3NPMm1wQWxRUHZKNzIz?= =?utf-8?B?QytudGRkQVhxNk94Z2o4OTBOUkM0RE9INnIwQnZJbnNVWE82aGhBaE1oWVJY?= =?utf-8?Q?IcUPb1HSD/PzodfCEwwW6k/Cg?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 464db6df-49f0-404f-105e-08daefe2660e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2023 12:34:48.2378 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SR1XlG7xGbtQe1seuQ27BbcMSRGJKj6iER5L4zw42N6ZEr8lUrwdV+U39GSVEGMreKdbN67ULZSHr0kmM+REbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7894 X-Spam-Status: No, score=-3028.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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: PR gas/29940 With the single-operand JAL entry now sitting ahead of the two-operand one, the parsing of a two-operand insn would first try to parse an 'a'- style operand, resulting in the insertion of bogus (and otherwise unused) undefined symbols in the symbol table, having register names. Since 'a' is used as 1st operand only with J and JAL, and since JAL is the only insn _also_ allowing for a register as 1st operand (and then there being a 2nd one), special case this parsing aspect right there. --- This, of course, is fragile, but I guess such workarounds are unavoidable with the chosen approach of (recurring) parsing, and with register names being special only in certain contexts. A more generic approach, then possibly also helping performance, might be to count the number of operands first, and do full parsing only when the count matches that in the operand specifier string (at least when there are multiple insn forms). The similar workaround in my_getSmallExpression() actually looks suspicious to me: I expect that it would get in the way of using equates "shadowing" names of GPRs. --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -3266,6 +3266,17 @@ riscv_ip (char *str, struct riscv_cl_ins continue; case 'a': /* 20-bit PC-relative offset. */ + /* Like in my_getSmallExpression() we need to avoid emitting + a stray undefined symbol if the 1st JAL entry doesn't match, + but the 2nd (with 2 operands) might. */ + if (oparg == insn->args) + { + asargStart = asarg; + if (reg_lookup (&asarg, RCLASS_GPR, NULL) + && (*asarg == ',' || (ISSPACE (*asarg) && asarg[1] == ','))) + break; + asarg = asargStart; + } jump: my_getExpression (imm_expr, asarg); asarg = expr_end;