From patchwork Wed Feb 22 15:30:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 9587221 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C378E6051E for ; Wed, 22 Feb 2017 17:16:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AE3462853A for ; Wed, 22 Feb 2017 17:16:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A277E28554; Wed, 22 Feb 2017 17:16:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 251FC2853A for ; Wed, 22 Feb 2017 17:16:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932602AbdBVRQN (ORCPT ); Wed, 22 Feb 2017 12:16:13 -0500 Received: from mail-wr0-f193.google.com ([209.85.128.193]:32866 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932458AbdBVRQN (ORCPT ); Wed, 22 Feb 2017 12:16:13 -0500 Received: by mail-wr0-f193.google.com with SMTP id s27so1197444wrb.0 for ; Wed, 22 Feb 2017 09:16:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=W8zTZkClFXv0Hl9RA4+pJq4VM8aBwWDA9Iryy7RLG/U=; b=QAJ/Ec/i1DULX1yYgYvw1uqdUssIfETnr5pGjfrhZNnVYFOLsbiFqcxD5CZiEKhmE0 nlozMFXZ9fytCd+y6uzofWpI+YTp2ltCznp3k4aJpQ1Ecq3fMkQoUH3Y6s4iqcAzFdky AOByOhu/uqxhjO9Ta/ye18KIysS14THN0rzgXchViLIh8v4YfIavVywMftpNnQQSESaQ GRTPFM2mXNxV0E4eBtbJAFW67CyLur8N0PRkrwslHmsOyeXq/LpOQlj6LjzKtGQacc/g nCw88PMcOKrmZJnKIb/q3c98WG7ptJdKlGKRipm+eDaolI6qBqAQh+0ZD7EODUURnLrv TH1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=W8zTZkClFXv0Hl9RA4+pJq4VM8aBwWDA9Iryy7RLG/U=; b=NEQHxqYls8I4ElIPC/U/AVc2uqB85y7lHOmjhEjSN8LcWphrDIbSmNFhqGhiuYpSEE RkyZ0Zeiellp36aIscRUWZ7v+woVCbJ1cB4RRZkfadM6tqtPDTM2s5YNQWxYOKdOZ9aa UAN225MCXYypCpmwG/6jM+eASVm9Ec43a6Q4mkhAhWpnBciFwRm8Wpqr+wlFMx0QADZD nmr+yo32NjfhVzrJc0T8bPv3vSP3hxu78Nvxuc27KvwPigqYxx4cq+XwT7ltNqVflj2G RciXNr5Kfey5H4VTpnTBNO2BKricegCLzj0urLHH1SI1ui46VBTMvEZD/LOJaciGiTEf ODLA== X-Gm-Message-State: AMke39mrTeP7R+CxffbXNvDLdxBwdA9mE3bd6TpM7e420jwvqFq9O9K3Z2E4lwr3J95EmA== X-Received: by 10.223.134.253 with SMTP id 58mr28888836wry.46.1487777423549; Wed, 22 Feb 2017 07:30:23 -0800 (PST) Received: from localhost.localdomain ([2a02:a03f:8de:6300:cc39:b82b:b425:b146]) by smtp.gmail.com with ESMTPSA id b87sm2510346wmi.0.2017.02.22.07.30.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Feb 2017 07:30:23 -0800 (PST) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Mark Rutland , Stephen Boyd , Will Deacon , Luc Van Oostenryck Subject: [PATCH 3/5] allow to warn on all overlapping initializers Date: Wed, 22 Feb 2017 16:30:04 +0100 Message-Id: <20170222153006.3035-4-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20170222153006.3035-1-luc.vanoostenryck@gmail.com> References: <20170221110355.GD300@arm.com> <20170222153006.3035-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP By default, sparse only warns on the first overlapping initialier. While this may be sensible for most situation, it's not always wanted to hide those others errors. This is especially annoying when testing. Change this by introducing a new warning flag '-Woverride-init-all', disabled by default and whose intented use is sparse's testsuite. Signed-off-by: Luc Van Oostenryck --- expand.c | 3 ++- lib.c | 2 ++ lib.h | 1 + validation/field-override.c | 34 +++++++++++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/expand.c b/expand.c index 7457c94dd..48cfa33d8 100644 --- a/expand.c +++ b/expand.c @@ -925,7 +925,8 @@ static void verify_nonoverlapping(struct expression_list **list) if (a && bit_offset(a) == bit_offset(b)) { warning(a->pos, "Initializer entry defined twice"); info(b->pos, " also defined here"); - return; + if (!Woverride_init_all) + return; } a = b; } END_FOR_EACH_PTR(b); diff --git a/lib.c b/lib.c index a20f68aa2..b3b38a43f 100644 --- a/lib.c +++ b/lib.c @@ -232,6 +232,7 @@ int Wnon_pointer_null = 1; int Wold_initializer = 1; int Wone_bit_signed_bitfield = 1; int Woverride_init = 1; +int Woverride_init_all = 0; int Wparen_string = 0; int Wptr_subtraction_blows = 0; int Wreturn_void = 0; @@ -482,6 +483,7 @@ static const struct warning { { "old-initializer", &Wold_initializer }, { "one-bit-signed-bitfield", &Wone_bit_signed_bitfield }, { "override-init", &Woverride_init }, + { "override-init-all", &Woverride_init_all }, { "paren-string", &Wparen_string }, { "ptr-subtraction-blows", &Wptr_subtraction_blows }, { "return-void", &Wreturn_void }, diff --git a/lib.h b/lib.h index 35edd3217..265c5ec7f 100644 --- a/lib.h +++ b/lib.h @@ -118,6 +118,7 @@ extern int Wnon_pointer_null; extern int Wold_initializer; extern int Wone_bit_signed_bitfield; extern int Woverride_init; +extern int Woverride_init_all; extern int Wparen_string; extern int Wptr_subtraction_blows; extern int Wreturn_void; diff --git a/validation/field-override.c b/validation/field-override.c index d5d00dfa8..cae30b4a2 100644 --- a/validation/field-override.c +++ b/validation/field-override.c @@ -68,21 +68,53 @@ static struct s b[2] = { /* * check-name: field-override - * check-command: sparse -Woverride-init $file + * check-command: sparse -Woverride-init -Woverride-init-all $file * check-known-to-fail * * check-error-start field-override.c:2:10: warning: Initializer entry defined twice field-override.c:6:10: also defined here +field-override.c:3:10: warning: Initializer entry defined twice +field-override.c:5:10: also defined here field-override.c:14:10: warning: Initializer entry defined twice field-override.c:15:10: also defined here +field-override.c:14:10: warning: Initializer entry defined twice +field-override.c:16:10: also defined here +field-override.c:14:10: warning: Initializer entry defined twice +field-override.c:17:10: also defined here +field-override.c:14:10: warning: Initializer entry defined twice +field-override.c:18:10: also defined here +field-override.c:14:10: warning: Initializer entry defined twice +field-override.c:19:10: also defined here field-override.c:23:10: warning: Initializer entry defined twice field-override.c:24:10: also defined here field-override.c:23:10: warning: Initializer entry defined twice field-override.c:25:10: also defined here +field-override.c:23:10: warning: Initializer entry defined twice +field-override.c:26:10: also defined here +field-override.c:26:10: warning: Initializer entry defined twice +field-override.c:27:10: also defined here +field-override.c:26:10: warning: Initializer entry defined twice +field-override.c:28:10: also defined here field-override.c:34:10: warning: Initializer entry defined twice field-override.c:35:10: also defined here +field-override.c:34:10: warning: Initializer entry defined twice +field-override.c:36:10: also defined here +field-override.c:34:10: warning: Initializer entry defined twice +field-override.c:37:10: also defined here +field-override.c:34:10: warning: Initializer entry defined twice +field-override.c:38:10: also defined here +field-override.c:34:10: warning: Initializer entry defined twice +field-override.c:39:10: also defined here +field-override.c:34:10: warning: Initializer entry defined twice +field-override.c:40:10: also defined here field-override.c:62:10: warning: Initializer entry defined twice field-override.c:63:10: also defined here +field-override.c:62:10: warning: Initializer entry defined twice +field-override.c:65:10: also defined here +field-override.c:62:10: warning: Initializer entry defined twice +field-override.c:66:10: also defined here +field-override.c:62:10: warning: Initializer entry defined twice +field-override.c:64:10: also defined here * check-error-end */