From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id F30CE3858D37 for ; Wed, 24 Jan 2024 23:56:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F30CE3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F30CE3858D37 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706140589; cv=pass; b=fjfZynQaG+rlwOQWQQOt/23PgLLKHuZJog7c/N/Jo/32lkcpJ6i/Lp4iDX+MRX7Jvj/KdHmyzkNcG8S3/zzysqneX7OTGRMwUaopj4yZ6qAsxbgspHiEt9yHxnBVketDwrOMW3t41soQ+SkiRulBkbLhKoAov/6qo9BJb90qzlo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706140589; c=relaxed/simple; bh=sK2gjBJVInIcL5GFP6JVVYs6j0JkuXMej44fb2t0Emo=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=axaTLUu6yx9JLV7NR6WM3Snl1mL6w0+fqbZJxVfJ7HaHZ6q5bgRIh06amyq6NWyh7BIBqVnpiCSYHhSbg/OPdvsEHputsvL5n5UB4GmY4vPpELuTjdQTN5CKuQm11kD+qRXVb/vlimk55eOf1hWFaFaDXDTn+tAMfZiqq1cwt6M= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40OLcKs6012358; Wed, 24 Jan 2024 23:56:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=gCkU0E+ara6HZqoWUrIn4eZsJg90Htm0mDfL4d/CEOU=; b=h8VisYCih1IOycCosPKgw0+AtMarjpC5lOjSwjuh8mErNrWBoGJQvXIsWYfJgvS+8afV gsNyzBT0y+LsNBolUIfBfq079ZQGYQsJLjK/ztihn1GfmMADjdJcohjulmCi2e8Zvgw5 8MhdbSCBg3MfswTePbXkFCy80MKZ8V2hVOCU2pCTpOZpINcNHpS76mMXWjnKlaRUu4UJ /aDUch5dgdFyV6ETLrUbnnrreVC+fvlkP2GSSbPAkdRMwUs3l3ogJEI1+nyfFOxdxJ6p Shydpvhjts8kuT0F2XOTGrbTAO0T/Nv3S/BuFzFUMs/MdEV1kn8f9Z5IWQb7lOLC97rr 2A== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vr79w5thr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 24 Jan 2024 23:56:26 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40ONIdRH014164; Wed, 24 Jan 2024 23:56:25 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3vs373hv5n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 24 Jan 2024 23:56:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QHXFPTAjSBmsD3jHXHGM+Vs42x2LQz6dbnpvSADVa4IBO8sHhgknkj+REDuBeWWGBZLgJyMCDLJv+Gxi4h93n2SqnGqqFF0q2UNLD2nzsgMS939LEKgd6gGNvOoNhMAfNyVJ74CoPSWo/tdva/FfRuH2cvPplDU7LumvHjZ+fF/Y24oVWaTt4d6OtcxXZVi82fcnH29ZIDAJj1cGRJbZDUfMDc1Geb3rtqDY9LyTnWDHlAxabhQ+rfCWZdWepKdYNhozp3d9j8Fw9na+WQvQMoul0fwdKNI00O6niskr0H9q0+gwyczuiE9s0qRwb2bEzhFH13V7S6zGUmm05msROg== 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=gCkU0E+ara6HZqoWUrIn4eZsJg90Htm0mDfL4d/CEOU=; b=KA01B46GW7M85zhjeSn5juTCpSKLGAtfkjThO2XKYg2YsPduT/atlkGzeIOqnJG64iuj7oJx8RkM9oyd2jruDDBaT68VmZ56VSKPXyjp0rIDbhSnBItD20MRDQi9IsEIiAuDvp/tzoov0l3eQfgxNz2nkhqBHpAHSrj5Xmge6qi6v2RY0krQA4e/WC6d7OB2cjV8SvjDoZDbRON/9f+AQmYeTLCsi1dF7Y9FHMa+K2Ar+5BjCDG/d/g0XcqntdUXsdxgXGHii3gK+6zn+JABFcd6rj33AWiOIs4l6mnXrOn88wC9i5cM/3hKuTAV44OmVjETrEwLC4PmnUTQH834XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gCkU0E+ara6HZqoWUrIn4eZsJg90Htm0mDfL4d/CEOU=; b=XvOmmm8ks1ZQlJY0hObETfX9XT8+En3X3VNCLQCPZD4xin+eD3D1IzZnY1h8q4QmcQuDHCsDlNDwf2Y25TUem9Mc/ZkwHDWT5mW+Rhb+0hbUEMF0mpgYlgSOUcDoMYChjZbVLW4nwONf/Jfwlr3og/JUN4daJnDJWyRtNT4FJUQ= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by SA1PR10MB6637.namprd10.prod.outlook.com (2603:10b6:806:2be::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Wed, 24 Jan 2024 23:56:22 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fde7:fb92:8ea1:a5ac]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fde7:fb92:8ea1:a5ac%4]) with mapi id 15.20.7202.031; Wed, 24 Jan 2024 23:56:22 +0000 Message-ID: Date: Wed, 24 Jan 2024 15:56:21 -0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH,V2] gas: x86: ginsn: adjust ginsns for certain lea ops Content-Language: en-US To: Jan Beulich Cc: binutils@sourceware.org References: <20240124064046.1191952-1-indu.bhagat@oracle.com> <2c745a10-04f5-4994-a627-ea434218a823@suse.com> From: Indu Bhagat In-Reply-To: <2c745a10-04f5-4994-a627-ea434218a823@suse.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR02CA0023.namprd02.prod.outlook.com (2603:10b6:303:16d::16) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|SA1PR10MB6637:EE_ X-MS-Office365-Filtering-Correlation-Id: 894c5bf7-cf6e-458b-c86a-08dc1d38114c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0Lg0yl1GddEcXDyx7bEb9my7TuQiSZTTjQkuTBnUpyd7dRaGgoxpKVeqcuThLNuDVeAAHKpQ34jqpCWHn9+Bx6YlKXJVWOkDpZYYRIJWkxVVOgJrVoTsDUBxJbysVxmHykc/ntsMjUX5ltFmLBnEn9Rubqa+y8REBCVwLkGKsZd4K5h6gvWC5NudCyTtPXjCwK1xw3Dl2Fvj/BsNSnZW6LpVfYwqiX6mQFR0YE9R0d010l+pdcl8zNNpkKzY53+rk3myRpXjVbKZ5Qzk46l56vhNeVFwPBDsfdmbuSF6aXDyjT3yl1ws3f7y4ZC8Alk0a+0mQA9Spx02znwNzdm5cvBSbfMMH+Ale5JmBczVArv5vMo7/HnMNI/adtsysGyqtgJDfrYF5lth+TDG08s9JeyJFO6S1ZWP9/ooCIe99OnFqbfVZSzk+wXx7xH2f6kBlVh1JuUknI1bg3KoX7B2HdWImdzKn9c2S3wuicQiVgyqxaES1/by/RWkXjpnWKBU765uMFYqBqB9zz3vdx8B62KPziLu+umi+ivXiwIczD6X104IlRExPOyJdYbOg0QbI1JPYQK2QSgFM/7z0kKHf/Xi4mONtQMGEXRilD0xKd6OaCvP93H3W9UwqFNOYD8PmiRBvIhme5KIYFbZX56hDQk1FJl4ORft8RUnhe94aclzw8+kPYdeLENDIKOKlZ0X X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2158.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(396003)(366004)(136003)(346002)(230173577357003)(230922051799003)(230273577357003)(451199024)(64100799003)(186009)(1800799012)(6512007)(2616005)(53546011)(83380400001)(6506007)(4326008)(8676002)(41300700001)(8936002)(2906002)(5660300002)(44832011)(6486002)(478600001)(31686004)(66556008)(316002)(6916009)(66946007)(66476007)(38100700002)(86362001)(31696002)(36756003)(66899024)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MWpSNkgzVnAwdVZ1RWNkdU45ek9xeU8veDd3WHVqTG5kcGxIVFBsMEVPNlpF?= =?utf-8?B?bGowWG5aTVo4c0pLUDRXeERDMDc1eXgvUzdZS1NUUnJ5U1NwQXRXOVdHajdV?= =?utf-8?B?dmMwTXUvcm5PQ3JIZEh1eWtLazdsSWZNNnBlMnlrYjhpaThWT0lRS2x0SjlM?= =?utf-8?B?aWN0elVhOWVOWVJWVUxBeXFHSlZVdWJMV3BKMVB2TGJubkljYW04UU5uZGYz?= =?utf-8?B?MmIvb1RBUU1seEpTbHdXdEtaSmFna2RQdWxNbEZkelV3Rk1oU3VmSmZTYjhQ?= =?utf-8?B?aDZ4WUVGbmRNbzB4d3MweDhac2w2dXNaMS83QWFBZ2xsZ1VvQjF5QlV3bVhr?= =?utf-8?B?U2NsT1dxeXAxbHVFbXFrOG1tMEw4SGpZTHQrMzlCTmxVb2dDYU5VTlhCOFZB?= =?utf-8?B?d0szcGY3R2dYUDBCOTM0cy8vZEdNWUJYL01yUTZkUXRHUWhqODNPVGQ1V0hV?= =?utf-8?B?VkNGdVJBQ3gwSmt3dVFxUy9sMHp5K0pueUFMd25ncTMyZjRESWFvdjYzZi9F?= =?utf-8?B?bEUxMWNMYU50b0kwalUvLy83Y1VzTCtENHdRYVRWNDV0NFZtaWYvNjBDVmhz?= =?utf-8?B?VThzSnBJUTBEMnMwNGVEYVR0R3dEM2cyWjVmMmRBSWNocTQ5ZzRvbnFyTmpv?= =?utf-8?B?NTBqU3NPUjFEb3M5Q1BBOWVscXBPak5PMDNFZm9ZQXoybjNOWUEybVN6MFYz?= =?utf-8?B?Z0NZQ3plN0x0K1BNeEpxTzJ5Wkw3TmVrZk9IRG5oQ2YwN1lwY2RhbG1MaVBH?= =?utf-8?B?NFFTZHVtY0lQNExuMGFwVEF3MDN1cmpGMUl0NjdXY0dZNmFRTXo4RGFjSUpj?= =?utf-8?B?MklRU1YxbmRTanlMbTJPaXdwb1RDYWVZcURPVENyTyt0Sm9WbzQ1amZuRURJ?= =?utf-8?B?cmRtbVA1VXY3RGIrbGh5blo1dUN5YndaWHZBMXJBbmIvMmdBekJJSWFFcFY0?= =?utf-8?B?UzVuRzNGYWdoZUNYRTQzZ2JJVndpQmVNdzBiMWxoL1NmazhnYjZMVTRFUU4w?= =?utf-8?B?YWk5SDAwb3hUYTFxd3Jmb0pyNkpKSHI2ZkxvamVteVJzVy9nVGVNWlVObWRr?= =?utf-8?B?dndIMHIzSW5XYjFhcHFLQUFzUmRsY3p5TWtiNFZKbWd0aXZnQnlNVlBxbE5x?= =?utf-8?B?VUd0enplb2ZxdTBCeFR6aldvcFF2Z09oMkZLSWdYT3J5cm5oMXI2QjdXUVhE?= =?utf-8?B?TCt0SU9aMW1zUFlmdFpyL2lnd1hxQzFPVHBmQThyREJtendQQVBWUEdaT09n?= =?utf-8?B?UG5HWnFCUW9hdjJ3Q1kzV2pzZEltSHJWTExjZHJPZFB0L2NkOEhsOUJqQ0N1?= =?utf-8?B?YzhWZ3JIb0pzQmEzemQzTFY4S0ZsMmlkU3JFdDNPUUNsUEJaVFdvYnJkTEZ5?= =?utf-8?B?QlRtRFc0anByeEVHZDEzSmpIVXJ3cDV6cFcxRjFSTFpLRndpeHpKUUNtS1pV?= =?utf-8?B?d0lqYy9Md010enJuTlRiQ3ByNW5VUnJCSkRMYVBSRm5lNmwzaEY1MVdPeXBM?= =?utf-8?B?N3JnWE5ZV25SaXlFUkg2OUE3Z2xlZWxhcC8xR251aEJYbTAvMnJKcTNhVEdU?= =?utf-8?B?Vm13VDBJYVVzQVB3V0U2bjZCTlZ3R0t4eHFYditpdW1GZXpGcUxsZkRtTndN?= =?utf-8?B?RmpLQWIwZHBpOFdaNnpNcDVkYkR6eGZyM2RFaHJHc1NNUGVzajZ3cEtHR1NU?= =?utf-8?B?T1dKMlM1dlN6KzNRS1BEamx0MHJOVDlXdmtoRHQ2SDdjKzZXMTU5S2I3WUFY?= =?utf-8?B?RGF2TUgzOU1QRHA3aVJybnRJNlJ3d1FPOGRzdzhqOWRuQzV1MnowNnlFZENm?= =?utf-8?B?WThabmZqd2JtcmVsVUo4SzNnTVRoYmYyOVlaVTFQVThTZFdsQmUyYTZEajZY?= =?utf-8?B?alEwVU5kQ3RtVWUxcTI2YVFoc2hBem1hWmo1Zm1XNkdWU0sxME03cktSVGly?= =?utf-8?B?TDNzbEFya21mSCs4QUVFY3pUSnFIM1JpNFVQbGpVTlQzekpGSlRwT3VIK2t5?= =?utf-8?B?dlhlUkRWUUNtZUJkemlEbksvaVo1MGptaXVtRzFJZjU5a1g3UWJRREt6aG85?= =?utf-8?B?ZHlMOUliM1JnT2I0dVdvYXNCeEN4Zm02RlpDMGE2QVRoYnEzM0NqS29mdGY5?= =?utf-8?B?Qm1jcjVaRzIrRDNHV29jbWt1ZVhtbHFWeS94Z0xRVG9ESVZBcm1HNFpWQkdw?= =?utf-8?Q?f4Z4sUdd7YDDHPb6bANyxzY=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6/12/US0zxm8b+cVcgPnji5P1WcBlZomfMOy4ezc/h+4RoOgn9hK0q2tkj3FazzHBonxAAGOEIa3V25XKb4tWaa3Vdgvhl1qPZLVdxrOriFwa7+xYmxbEsFtTcDGYcHv2Bohs2DirFHfa3orQLGB3CvgHNcHTM6I1KZ6NnXQZcDyeBCGVAXgZGXGVevgjewuF7FZVgD6+4e3mSYDsShnkgXleyABjztViaYVpvBAy9tLYu3Rhh+C81c+Kw25XnnJZXA2U1DJ0S/WQmbz5jvdDYR1txvktrikgpYynno0hjtjyXcnD+/9eU/Ls+WEsxP5l2zOHlrd8ojP18MdDCyjQLpIOL+VC1Z1LDeIf0Pr7vunKswXN7lSi0p7a3wPnmEXM3ISFdlDxrnejBCscbNgjkOdkCXoS9hCmBmNrkqujBsPb+ERMA1BL/p003xMQ4dMHP/iASV8uC/Eeer7YJIXicOjq/+f519rT3uAIfde/Evkjw4K/ORWTlRlhLDy2Wk1hgir6ZbxIlrByL1Vx9mk5PLwJgDKAo27fqJo0TjyIj+1JdipW+GuNUCtcW4NYnC1q9WphlAZhIMzMyEcz9TQiPI2QSCzOFS4OlHMg529ZTA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 894c5bf7-cf6e-458b-c86a-08dc1d38114c X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 23:56:22.6268 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UbfbVHy5+80AieSQKYC8ZyZdUw74L3+sdylcrYU5AhOAtgco5rCabr0iH5qQOFieJ6ivbLthGM64sm1Jh9GfKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6637 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-24_12,2024-01-24_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 mlxlogscore=795 mlxscore=0 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401240172 X-Proofpoint-GUID: q6Yg3Kk-wsNdVn4-nJ24vSFKBKcEJ1Il X-Proofpoint-ORIG-GUID: q6Yg3Kk-wsNdVn4-nJ24vSFKBKcEJ1Il X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: On 1/23/24 23:51, Jan Beulich wrote: > On 24.01.2024 07:40, Indu Bhagat wrote: >> @@ -5664,76 +5666,64 @@ x86_ginsn_lea (const symbolS *insn_end_sym) >> { >> offsetT src_disp = 0; >> ginsnS *ginsn = NULL; >> - unsigned int base_reg; >> - unsigned int index_reg; >> + unsigned int src1_reg; >> + const reg_entry *src1; >> offsetT index_scale; >> unsigned int dst_reg; >> >> if (!i.index_reg && !i.base_reg) >> { >> - /* lea symbol, %rN. */ >> - dst_reg = ginsn_dw2_regnum (i.op[1].regs); >> - /* TBD_GINSN_INFO_LOSS - Skip encoding information about the symbol. */ >> - ginsn = ginsn_new_mov (insn_end_sym, false, >> - GINSN_SRC_IMM, 0xf /* arbitrary const. */, 0, >> - GINSN_DST_REG, dst_reg, 0); >> + if (i.disp_operands && i.op[0].disps->X_op == O_constant) >> + { >> + /* lea const, %rN. */ >> + src_disp = i.op[0].disps->X_add_number; >> + dst_reg = ginsn_dw2_regnum (i.op[1].regs); >> + ginsn = ginsn_new_mov (insn_end_sym, false, >> + GINSN_SRC_IMM, 0, src_disp, >> + GINSN_DST_REG, dst_reg, 0); >> + ginsn_set_where (ginsn); >> + } > > Since earlier on you've been mentioning that you primarily target insn > forms actually in use in existing code, I wonder whether you've ever > seen any use of this. The same is better (shorter) expressed by MOV, > and hence I'd expect people to prefer that form. IOW the question here > is: Is there much value in having this code, rather than simply > penalizing people bogusly using such by having this case end at the > common x86_ginsn_unhandled path as well. > IMO this is not a useful pattern either for the case when it is better expressed by a MOV. I have not seen such usages so far, and I dont expect this to be seen either. I am OK with removing this handling and default to x86_ginsn_unhandled code path with code comments here. Makes sense. >> + /* Skip handling lea symbol, %rN here. Deal with it in the >> + x86_ginsn_unhandled code path. TBD_GINSN_GEN_NOT_SCFI. */ >> } >> - else if (i.base_reg && !i.index_reg) >> + else if ((i.base_reg && !i.index_reg) >> + || (!i.base_reg && i.index_reg)) > > I frequently see conditionals like this written this way. Maybe it's > indeed clearer to a majority; personally I'd prefer the shorter > > else if (!i.base_reg != !i.index_reg) > > However, considering the earlier if() this is an else-if to, even > > else if (!i.base_reg || !i.index_reg) > > would also suffice (but as per above that if() may want to go away). > OK. I will surely spend a few extra seconds reading this (!i.base_reg != !i.index_reg) as compared to the original construct, but I am fine with using it if that's your preference. I have switched to that expression. >> { >> - /* lea -0x2(%base),%dst. */ >> - base_reg = ginsn_dw2_regnum (i.base_reg); >> - dst_reg = ginsn_dw2_regnum (i.op[1].regs); >> + /* lea disp(%base) %dst or lea disp(,%index,imm) %dst. */ > > Would be nice if the missing commas were added here. > OK. >> - if (i.disp_operands) >> - src_disp = i.op[0].disps->X_add_number; >> - >> - if (src_disp) >> - /* Generate an ADD ginsn. */ >> - ginsn = ginsn_new_add (insn_end_sym, true, >> - GINSN_SRC_REG, base_reg, 0, >> - GINSN_SRC_IMM, 0, src_disp, >> - GINSN_DST_REG, dst_reg, 0); >> - else >> - /* Generate a MOV ginsn. */ >> - ginsn = ginsn_new_mov (insn_end_sym, true, >> - GINSN_SRC_REG, base_reg, 0, >> - GINSN_DST_REG, dst_reg, 0); >> - } >> - else if (!i.base_reg && i.index_reg) >> - { >> - /* lea (,%index,imm), %dst. */ >> - /* TBD_GINSN_INFO_LOSS - There is no explicit ginsn multiply operation, >> - instead use GINSN_TYPE_OTHER. Also, note that info about displacement >> - is not carried forward either. But this is fine because >> - GINSN_TYPE_OTHER will cause SCFI pass to bail out any which way if >> - dest reg is interesting. */ >> index_scale = i.log2_scale_factor; >> - index_reg = ginsn_dw2_regnum (i.index_reg); >> + src1 = (i.base_reg) ? i.base_reg : i.index_reg; >> + src1_reg = ginsn_dw2_regnum (src1); > > Since I can't spot any other use of src1, why not simply > > src1_reg = ginsn_dw2_regnum (i.base_reg ? i.base_reg : i.index_reg); > > ? Otherwise at the very least please omit the pointless parentheses in > the conditional expression. > Will remove the parentheses. >> dst_reg = ginsn_dw2_regnum (i.op[1].regs); >> - ginsn = ginsn_new_other (insn_end_sym, true, >> - GINSN_SRC_REG, index_reg, >> - GINSN_SRC_IMM, index_scale, >> - GINSN_DST_REG, dst_reg); >> - /* FIXME - It seems to make sense to represent a scale factor of 1 >> - correctly here (i.e. not as "other", but rather similar to the >> - base-without- index case above)? */ >> - } >> - else >> - { >> - /* lea disp(%base,%index,imm) %dst. */ >> - /* TBD_GINSN_INFO_LOSS - Skip adding information about the disp and imm >> - for index reg. */ >> - base_reg = ginsn_dw2_regnum (i.base_reg); >> - index_reg = ginsn_dw2_regnum (i.index_reg); >> - dst_reg = ginsn_dw2_regnum (i.op[1].regs); >> - /* Generate an GINSN_TYPE_OTHER ginsn. */ >> - ginsn = ginsn_new_other (insn_end_sym, true, >> - GINSN_SRC_REG, base_reg, >> - GINSN_SRC_REG, index_reg, >> - GINSN_DST_REG, dst_reg); >> - } >> + /* It makes sense to represent a scale factor of 1 precisely here >> + (i.e., not using GINSN_TYPE_OTHER, but rather similar to the >> + base-without-index case). Ignore the case when disp has a symbol >> + instead. */ >> + if (!index_scale >> + && (!i.disp_operands >> + || (i.disp_operands && i.op[0].disps->X_op == O_constant))) > > This is functionally identical to the shorter > > if (!index_scale > && (!i.disp_operands || i.op[0].disps->X_op == O_constant)) > > But: What about any of > > lea (%rax,%riz),%rbp > lea (%rax,4),%rbp > lea (%rax,%riz,4),%rbp > > ? Current behaviour is: lea (%rax,%riz),%rbp ginsn: OTH 0, 0, %r6 lea (%rax,4),%rbp **** Warning: scale factor of 4 without an index register ginsn: MOV %r0, %r6 lea (%rax,%riz,4),%rbp ginsn: OTH 0, 0, %r6 lea sym(,%riz), %rbp ginsn: OTH 0, 0, %r6 lea (,%riz), %rbp ginsn: MOV %r4, %r6 (We use DWARF register number 4 {%rsi} in lieu of %riz). With respect to SCFI correctness, I dont see an issue...