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 0BD163858D1E for ; Thu, 18 Aug 2022 13:01:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0BD163858D1E Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27IBirsv025381; Thu, 18 Aug 2022 13:01:41 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3j1mtj05hr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Aug 2022 13:01:40 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 27IAXr67005807; Thu, 18 Aug 2022 13:01:40 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2040.outbound.protection.outlook.com [104.47.66.40]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hx2dagvfw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Aug 2022 13:01:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ee1T2XBve6x7ElPxo/lqbeQjXYwGyJtMf8ZHg9dv2tOXSjlibJoMgrcX042y8Hzy9t0XjriOM9CmmL7ufhn8PIToExq4KIi0W7jgp0xFCV0ni6ZHA6hoMkhIJIGJA80Y6mbdCT0eOGLJszI/n1aDZ/JrEyBg3kANCJWbgCe6anD86b1xp7MqEDBsd4vISJin89u2wVpfQO0vQRyqjFT9vyjbEqUSo9aDK8TVGJLGJe5/PeDQkjDZRHmBrBNL6HnOca21XH9IFA0A7isP3QkzmCC+hFd/Np6QjigeOJqT2z3n/UXvGQlGXlPzb3iDLp2VUXhl1rEeBxm69VgEf7Riqw== 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=e3ObdluSqGBQp635FY/X9ENr2kPKDLVhOTeslGf4Dk0=; b=mrlcniVtuE12Fhw9/+WEDe9sGIbY1t8nFZTTykmyB2UJAgQ3PsT5fvTd36DkbZBw71F2TKcOJOwc6DLt9kEc4bQtcAhJrlA9LepZ8AsV+D232GPGz1+wXjuhX0akAk2Sxd5we9Kun1VK6stGPgkTr9EAGd+iehtSs6bZvcuXYkRN8CRf4BE2pkHyF+ryHCkVRnpL7bx2bS5+T02sAtJ29KVhUuLSasWJSw9k2OpOL/GlbJsmGEObu9P4E9Vklon5WwG4/MPJbV4VuySSRfP5gTyA6uyOhhxvlbsz10GZ1/ywDkcpowWc68KhpWIIyAX0DfYz7LR7Fr2y5RE0vFBLlw== 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 Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by CH0PR10MB4905.namprd10.prod.outlook.com (2603:10b6:610:ca::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.16; Thu, 18 Aug 2022 13:01:37 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::b5ee:262a:b151:2fdd]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::b5ee:262a:b151:2fdd%4]) with mapi id 15.20.5525.010; Thu, 18 Aug 2022 13:01:37 +0000 From: "Jose E. Marchesi" To: Joseph Myers Cc: Subject: [PATCH V2] Add warning options -W[no-]compare-distinct-pointer-types References: <87mtciu23z.fsf@oracle.com> Date: Thu, 18 Aug 2022 15:01:32 +0200 In-Reply-To: (Joseph Myers's message of "Mon, 8 Aug 2022 18:14:17 +0000") Message-ID: <87a681d7tf.fsf_-_@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0024.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::11) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d86d5bc9-6abb-4df4-dd03-08da8119c935 X-MS-TrafficTypeDiagnostic: CH0PR10MB4905:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 23Coa9AesVhDo5bNTjJJw2HFRGE7AwzOtkRJBpMIOC3EFVqkLs1lfgRqcLn93YWaKXt3OAIbAWm6miEBUdV5smhMQJvTSSWx6AvZqPZiziLSONf9quLtrKmkdvurBZxjc/j1/nuxZfwXGHIPq9RmncomyeTDso1TlS1Kv32xsz9UvBvVAkzrlQoTpWcQ4s3PSs1gGmc2HdhgOh1mAgFdp+TLBCfuZPbk0CUsijgO9wf0J+B3UZOuBcT+2Lw/Xj+uqrFLHtpDwZJ7U/yHA+/8YzWIa+nRHK7VOZ7pVaYWpCUNKeeC47EKbnT77kBfPGWpWsfOoJdPFra+YSzoFU5gztDtbXdRcLu72uVNQt9h4Csf9IkpuO2EVIBYLlhkjT0BweJIg5kFjuQpKxX+w0C5DqUMQ3WlRoiC9FnuzYyhCfalUEEOgtnsNSSXBwryyP8iOxih9p5m5taIgkkdw7ewLrq7FO5UFxJ7xuBUChplWYnUfSpUJps5CniL3Ki4aFTMbZRPE8XJdSgETr5CpO7pFMGwMpziqW0D0cDdlJj7qbneum08ecWBZUIz79T/7BaW9ncgMwZTVTfE/1QiJD8hMwnO1kPcgOftbn3XIyr0g5U+i9Oh9s66Sfv8Y3kYato7aOy8aR7oHub/cSqwTEpdfQ7JKkpd5B1JP6yMw9oV7flKCdipJ66wU870+Gi16kMyH85XA5+RrfmwzI7wtIIzQA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR10MB2888.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(366004)(136003)(346002)(376002)(39860400002)(396003)(41300700001)(6666004)(2906002)(6486002)(66476007)(66556008)(4326008)(8676002)(66946007)(8936002)(5660300002)(86362001)(186003)(478600001)(83380400001)(2616005)(6512007)(26005)(6506007)(38100700002)(316002)(36756003)(6916009); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cDBrMjFITEFQK0xxNDRmZk1mb3BDY1JTV3dTTG9PZkE2MDAvVzFCd0ZuTFRy?= =?utf-8?B?QkI4VlZmcE54YVJWaUhONDFmU3JsbklCRDkrdWZHeHo5QkpZOGJQTUNwc0VC?= =?utf-8?B?a25zYzJtZjE5Z3B2SUNGeTNtdEt3UG1zNzhCS1pWU0t6OFNNWDNvdHljdS8x?= =?utf-8?B?aHZsbXZORTBaQnQzOGdLRXZwL3BBVTdpRm5uUXMreDYrZ3NLbWpXWVZFK0lj?= =?utf-8?B?aTFTejh2eDdoTXZkR2IybnZuNTN4cHMzYXNSSmFxMU1TM2grTy9HWmtPWFZK?= =?utf-8?B?K2lrdW5Ndkl6RnBkZU0ySzV0Y1lsdEhORE5OSU5DTmtTKzRMNUpudmVTRFps?= =?utf-8?B?QWV4Mlc1V2FzWms0TFY4Tmk5WUFBU21SdGlqRUVrT1ZsaGNGdFpHdS8zSXVX?= =?utf-8?B?bWd5UnZCK2czN2dlOGVraTl3MXRkSnIxT1B1UjNXMm5LUkUwdlZzcmk4S1d1?= =?utf-8?B?bW9ZMnhmREs4ZTVjcDdpQlp0S3pEbU5ITUN1SnVWQ0FYUW9vclVPczdETThP?= =?utf-8?B?c1FpMjNlT01yLys5U3pYaWNMVmJqV1E1WUFpTFR6VmhtTnlwRy9KMGhxYTJx?= =?utf-8?B?WHRNeW5Nc1BzN3BHUEdIbktSL3NXK3VmY1JhUlZCU1hITEhPdFYvT25hY2Yw?= =?utf-8?B?bkxnRGQxR096MEJUMWV4QXBpOEFOeTdYeGZ2OS9TdzgrOEFSQzl2YlE0SGJz?= =?utf-8?B?MXpBakdYNTRyTDN1cXhrVE03V2VZbGt3dnlGb0NRMnNVVjFwTHF0QTl3dkps?= =?utf-8?B?UkZGeWRzRkRaemY0OTVXRWJmRUE5T3NUaTBWa25kL3dKTjdibjRWOG54L3VG?= =?utf-8?B?enF5d0VQNnh0M3EwQldYdm9VREhqOGJBZWQvc3c0TlhXZ0tnc2pQVW1MZFV2?= =?utf-8?B?NXhlYWRvVCtsbFZKelVUZWpKUEJiYitTVkcxOVNTK0xRd215OWJCejFvTGl4?= =?utf-8?B?NGZqWHFPcGNmZE5qdmgzNHVCQUdiV3haSzQwc0lvNEtVRUM1TVRvOUwxeFg0?= =?utf-8?B?L0hYTUdEZXpNa3lPM2EvSGhaU2xSRVZ3KzhOSXRWd0lnbUVmNnZ0cVpSdjlD?= =?utf-8?B?QkRzTGF3ME9xK2JNZ2pQVnludjJSS2NrTTBsZjk4YzBjVmhRUHhiWWNqWWNx?= =?utf-8?B?TTlISmgyYjdHYWUrV2hiVkhxeG5meW9GMmgzMGthbzZPcXBBWFAyVkJwMkRN?= =?utf-8?B?dUVRUy9DMUVYaElVVzV5aVlWeEYxdFRpWFExdnFkRVJGR1dhRUJlbTFjMzdG?= =?utf-8?B?RlBqSUFFcTdmTU5BbXBlTW5FOW96TU55dWhwd3pReWkza0ZwdHN5QmxYTTNU?= =?utf-8?B?U2U4WHFYY3R1QUxuY3VuTzRqRXNoQnJ2ZFBRcVZRbVFGdE9aWnR2bzkrbXJR?= =?utf-8?B?aGZxMmlhU1RPZGpkL2d2VTZBamVPeXFsRXM1NjNPTkFiWjBzVnp3RTRNWVhJ?= =?utf-8?B?RThmR3VJdUw1U0hDeU5kMmI0VVJvSklSdnBrbTZmQUlNeUNXTWpwb0VUMWc4?= =?utf-8?B?V2cxQXZvNkdXWHpPRndRTFBERUpodUhnK0NEWkFiOXlWaUhjZ1laUjBVVFhE?= =?utf-8?B?UjNXZ05ZZ1F1MnZLQVgxU0VGQmh4QUpwQkZxWk1QNDQzSUtoTU5mWjMzMmVU?= =?utf-8?B?VkVncWpYQWpwYitmVVJUcHBoeTJNQ0hNaTB5OXR2SXJpZGhyMUVrM2pHbVQ2?= =?utf-8?B?TVY0UTMxSzAxblZDMWs3bndDVzZJdnRaOG5ta1RlOVVSK2U3MjY4RGpWeHF6?= =?utf-8?B?UC9uSXU1NC9GRmtVWHYxUlJ6OExFRDZIdW1vQjJYVzFDbEgydWJPdStIYW1C?= =?utf-8?B?azlyRnZYVXJSRERyU1g3Vm9RTGEzWkdPU3hIR09RdHNGdEY0cEFHZGlTczg5?= =?utf-8?B?MExkQmh3OVhXYkdnLzFzWWhseDNNdXRkM25PNS8xVW5lR2xHTTJ6TVJSSnBy?= =?utf-8?B?WlRtVjlGTklNQlhIM0dHWmxLbko3a1ZHT2k5cjRSZHZRNzV0Zk5wdkc2bmFV?= =?utf-8?B?N2NqNTIyWnBJUG9lLzdEdlpybG1sRkJZWGN4ajg4MmhmMWRJaHFoNG9SNkRQ?= =?utf-8?B?d1J3WVd5QUMyemhvYnBrek44ZVY4emUzYWdTaUwwVjRpRmgvZUFlV2J2SWFS?= =?utf-8?B?L0NaYlViZ1VSNDB6TGZpaFJoL2NxSVRTMld4K3pqQnpZQ0p5YUdLWDhtMlhx?= =?utf-8?B?TlE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lbAvwsjAc4z2ViNlgMU1NpehUuHExI5AEIJNm/J6aVRtXBO7pR5QMPTAuRMotKouQ/ruPddSxkw7mAcr9eCTa/D+tjzU33H3qkbG4rS6IjoOO5fcc2ea2CJg39ewGUjDmph582jUnLayN7vLXyd3SgOIBJ/tTWRmMClXMCMPsUk37fEZhSSohvh496+RXqtsvFEmkhk1SJLtfl59pWh29U+WWTABviqVtUPGYSm7JbbwI1psRiw9BshmRtWm1iSrVpc7EQGmh/+IyGoAhC/pQXVi6CQ9xlajAZ8XWjkPZ44tr1cQoNQdCOVxLEZo/iubhDhHpVvA+Y1uqRCw0p96JsODie4Jbe5MZZfpPIINxpUuGes7dU7o7nW2bAbKhLl/4AflMM7dHjDHWELyWFz+A5KiRUT4rIqkuQ3kjD+fercUYUeI+ovL2lnQsqVN9XwaTIDKOxMKtUmNORl+l0MKYLsPKHKar0UDLgUFsbDEtvcdNNONpid0G7NJhj65zg1NWPXKSvzWT0DDKM3Gk33Hm69TGmJRRCB0nhIV+y0g2G95oihoTJOpDIyEd1lWB78XIiMqotxuWYdTu6dG6IWefnGW0gsKdBZv/CFTUEkmwzw676zd3gMsprmJQtV46r05xObsq7Uoom3Q93mfd1IAUdnpi6t+XBhmoVSUT8Usv2qhcLjclhgMgpSMOxisMiYuzMUUeCks7HDTgUgEk+eDhNueZZb5kSXXNi0nxyg9Mr8pnzvHsxsN4LQhAmuWBO/zhbsWLdDgz2wiZUdNSftqOw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d86d5bc9-6abb-4df4-dd03-08da8119c935 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2022 13:01:37.7356 (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: kQw6+4+A88zItGi3IK0h4z7zBROwRlqRsAWjgk/CSN3pr+KSkfZx0Fw0floDK0aIIMv5kVFBhhCf31W7E+WzRO0Eo1FH4biuXITMnMY94To= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4905 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-18_12,2022-08-18_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208180044 X-Proofpoint-ORIG-GUID: x1U9aiICOatn_eDP8JMNv4R5EfJ5VHij X-Proofpoint-GUID: x1U9aiICOatn_eDP8JMNv4R5EfJ5VHij X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, 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 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: Thu, 18 Aug 2022 13:01:49 -0000 Hi Joseph. > On Fri, 5 Aug 2022, Jose E. Marchesi via Gcc-patches wrote: > >> +Wcompare-distinct-pointer-types >> +C C++ Var(warn_compare_distinct_pointer_types) Warning Init(1) >> +Warn if pointers of distinct types are compared without a cast. > > There's no implementation for C++ in this patch, so the option shouldn't= =20 > be supported for C++ in c.opt. However, C options are normally supported= =20 > for Objective-C; unless you have a specific reason why Objective-C suppor= t=20 > for this option would be a bad idea, "C ObjC" would be appropriate for th= e=20 > languages. Thanks for the review! See a V2 of the patch with the suggested change below. ---- GCC emits pedwarns unconditionally when comparing pointers of different types, for example: int xdp_context (struct xdp_md *xdp) { void *data =3D (void *)(long)xdp->data; __u32 *metadata =3D (void *)(long)xdp->data_meta; __u32 ret; if (metadata + 1 > data) return 0; return 1; } /home/jemarch/foo.c: In function =E2=80=98xdp_context=E2=80=99: /home/jemarch/foo.c:15:20: warning: comparison of distinct pointer types = lacks a cast 15 | if (metadata + 1 > data) | ^ LLVM supports an option -W[no-]compare-distinct-pointer-types that can be used in order to enable or disable the emission of such warnings. It is enabled by default. This patch adds the same options to GCC. Documentation and testsuite updated included. Regtested in x86_64-linu-gnu. No regressions observed. gcc/ChangeLog: PR c/106537 * doc/invoke.texi (Option Summary): Mention -Wcompare-distinct-pointer-types under `Warning Options'. (Warning Options): Document -Wcompare-distinct-pointer-types. gcc/c-family/ChangeLog: PR c/106537 * c.opt (Wcompare-distinct-pointer-types): New option. gcc/c/ChangeLog: PR c/106537 * c-typeck.cc (build_binary_op): Warning on comparing distinct pointer types only when -Wcompare-distinct-pointer-types. gcc/testsuite/ChangeLog: PR c/106537 * gcc.c-torture/compile/pr106537-1.c: New test. * gcc.c-torture/compile/pr106537-2.c: Likewise. * gcc.c-torture/compile/pr106537-3.c: Likewise. --- gcc/c-family/c.opt | 4 ++++ gcc/c/c-typeck.cc | 8 ++++--- gcc/doc/invoke.texi | 6 +++++ .../gcc.c-torture/compile/pr106537-1.c | 23 +++++++++++++++++++ .../gcc.c-torture/compile/pr106537-2.c | 21 +++++++++++++++++ .../gcc.c-torture/compile/pr106537-3.c | 21 +++++++++++++++++ 6 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr106537-1.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr106537-2.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr106537-3.c diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index dfdebd596ef..c401c06ec0b 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1844,6 +1844,10 @@ Winvalid-imported-macros C++ ObjC++ Var(warn_imported_macros) Warning Warn about macros that have conflicting header units definitions. =20 +Wcompare-distinct-pointer-types +C ObjC Var(warn_compare_distinct_pointer_types) Warning Init(1) +Warn if pointers of distinct types are compared without a cast. + flang-info-include-translate C++ Var(note_include_translate_yes) Note #include directives translated to import declarations. diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index de8780a1502..04af02add37 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -12397,7 +12397,8 @@ build_binary_op (location_t location, enum tree_cod= e code, } else /* Avoid warning about the volatile ObjC EH puts on decls. */ - if (!objc_ok) + if (!objc_ok + && warn_compare_distinct_pointer_types) pedwarn (location, 0, "comparison of distinct pointer types lacks a cast"); =20 @@ -12517,8 +12518,9 @@ build_binary_op (location_t location, enum tree_cod= e code, int qual =3D ENCODE_QUAL_ADDR_SPACE (as_common); result_type =3D build_pointer_type (build_qualified_type (void_type_node, qual)); - pedwarn (location, 0, - "comparison of distinct pointer types lacks a cast"); + if (warn_compare_distinct_pointer_types) + pedwarn (location, 0, + "comparison of distinct pointer types lacks a cas= t"); } } else if (code0 =3D=3D POINTER_TYPE && null_pointer_constant_p (orig_= op1)) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1ac81ad0bb4..88b4af14d8c 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -341,6 +341,7 @@ Objective-C and Objective-C++ Dialects}. -Wcast-align -Wcast-align=3Dstrict -Wcast-function-type -Wcast-qual @g= ol -Wchar-subscripts @gol -Wclobbered -Wcomment @gol +-Wcompare-distinct-pointer-types @gol -Wconversion -Wno-coverage-mismatch -Wno-cpp @gol -Wdangling-else -Wdangling-pointer -Wdangling-pointer=3D@var{n} @gol -Wdate-time @gol @@ -8631,6 +8632,11 @@ programs. Warn for variables that might be changed by @code{longjmp} or @code{vfork}. This warning is also enabled by @option{-Wextra}. =20 +@item -Wcompare-distinct-pointer-types +@opindex Wcompare-distinct-pointer-types +Warn if pointers of distinct types are compared without a cast. This +warning is enabled by default. + @item -Wconversion @opindex Wconversion @opindex Wno-conversion diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c b/gcc/testsui= te/gcc.c-torture/compile/pr106537-1.c new file mode 100644 index 00000000000..56c8deeb4fe --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } + { dg-options "" } + This testcase checks that warn_compare_distinct_pointer_types is enable= d by + default. */ + +typedef int __u32; + +struct xdp_md +{ + char *data; + char *data_meta; +}; + +int xdp_context (struct xdp_md *xdp) +{ + void *data =3D (void *)(long)xdp->data; + __u32 *metadata =3D (void *)(long)xdp->data_meta; + __u32 ret; + + if (metadata + 1 > data) /* { dg-warning "comparison of distinct pointer= types" } */ + return 0; + return 1; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c b/gcc/testsui= te/gcc.c-torture/compile/pr106537-2.c new file mode 100644 index 00000000000..7a9b2aec0b8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-Wcompare-distinct-pointer-types" } */ + +typedef int __u32; + +struct xdp_md +{ + char *data; + char *data_meta; +}; + +int xdp_context (struct xdp_md *xdp) +{ + void *data =3D (void *)(long)xdp->data; + __u32 *metadata =3D (void *)(long)xdp->data_meta; + __u32 ret; + + if (metadata + 1 > data) /* { dg-warning "comparison of distinct pointer= types" } */ + return 0; + return 1; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c b/gcc/testsui= te/gcc.c-torture/compile/pr106537-3.c new file mode 100644 index 00000000000..dc5dd46e3cb --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr106537-3.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-Wno-compare-distinct-pointer-types" } */ + +typedef int __u32; + +struct xdp_md +{ + char *data; + char *data_meta; +}; + +int xdp_context (struct xdp_md *xdp) +{ + void *data =3D (void *)(long)xdp->data; + __u32 *metadata =3D (void *)(long)xdp->data_meta; + __u32 ret; + + if (metadata + 1 > data) /* There shouldn't be a warning here. */ + return 0; + return 1; +} --=20 2.30.2