From patchwork Mon Aug 19 08:39:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre-Marie de Rodat X-Patchwork-Id: 1149119 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-507231-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="T4upliXy"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46BnVb1JCxz9s3Z for ; Mon, 19 Aug 2019 18:42:30 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=gkIaK84e2zoIntgJwHFNjhDpg3+63Sr2/KoKPLxjoLNfeku4lt q6GIg1Ws7Y8H8aSYrfxUK9ueRtqE87AHHDnCc2WuT2Ck4I+5Q/ZmKCROs8QIZdWz SOSPR4sbGnQzSt6lAnapTzZkzpI/tXp1emtGe2Z5/npIy3CnjGGG/W+H0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; s= default; bh=NglmnMwgt2tm8beUM0ML6H6kEcA=; b=T4upliXyhRMt824UPk4K +5ytQqzlqqNsuoaEQUVBD0VDWFt1qXVOQOx5pgpplZVN8r9ZvRp8YrZl/+S6tZHq wTy5J4qzJuURhM0Iy7NjTtPS7SfMQejybQLk0ErK3Ocfn7VM5YgC3hDcMvYVDpVj 89e4e8cDA5AsV73RqxHP8vc= Received: (qmail 118224 invoked by alias); 19 Aug 2019 08:39:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 116735 invoked by uid 89); 19 Aug 2019 08:39:15 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-10.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, SPF_NEUTRAL autolearn=ham version=3.3.1 spammy=HX-Languages-Length:2085 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (209.51.188.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 19 Aug 2019 08:39:13 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hzdC1-0007zD-ET for gcc-patches@gcc.gnu.org; Mon, 19 Aug 2019 04:39:11 -0400 Received: from rock.gnat.com ([2620:20:4000:0:a9e:1ff:fe9b:1d1]:35774) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hzdBz-0007vc-DK for gcc-patches@gcc.gnu.org; Mon, 19 Aug 2019 04:39:07 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 8D9F256055; Mon, 19 Aug 2019 04:39:03 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id zS9znr9RxLjm; Mon, 19 Aug 2019 04:39:03 -0400 (EDT) Received: from tron.gnat.com (tron.gnat.com [205.232.38.10]) by rock.gnat.com (Postfix) with ESMTP id 7C6F311619A; Mon, 19 Aug 2019 04:39:03 -0400 (EDT) Received: by tron.gnat.com (Postfix, from userid 4862) id 7B9706AB; Mon, 19 Aug 2019 04:39:03 -0400 (EDT) Date: Mon, 19 Aug 2019 04:39:03 -0400 From: Pierre-Marie de Rodat To: gcc-patches@gcc.gnu.org Cc: Bob Duff Subject: [Ada] Suppress warnings on unreferenced parameters of dispatching ops Message-ID: <20190819083903.GA33558@adacore.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 2620:20:4000:0:a9e:1ff:fe9b:1d1 X-IsSubscribed: yes If the -gnatwf switch is used to activate warnings on unreferenced formal parameters, the warning is no longer given if the subprogram is dispatching, because such warnings tend to be noise. It is quite common to have a parameter that is necessary just because the subprogram is overriding, or just because we need a controlling parameter for the dispatch. Tested on x86_64-pc-linux-gnu, committed on trunk 2019-08-19 Bob Duff gcc/ada/ * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning on formal parameters of dispatching operations. gcc/testsuite/ * gnat.dg/warn29.adb, gnat.dg/warn29.ads: New testcase. --- gcc/ada/sem_warn.adb +++ gcc/ada/sem_warn.adb @@ -4407,11 +4407,31 @@ package body Sem_Warn is E := Body_E; end if; - if not Is_Trivial_Subprogram (Scope (E)) then - Error_Msg_NE -- CODEFIX - ("?u?formal parameter & is not referenced!", - E, Spec_E); - end if; + declare + B : constant Node_Id := Parent (Parent (Scope (E))); + S : Entity_Id := Empty; + begin + if Nkind_In (B, + N_Expression_Function, + N_Subprogram_Body, + N_Subprogram_Renaming_Declaration) + then + S := Corresponding_Spec (B); + end if; + + -- Do not warn for dispatching operations, because + -- that causes too much noise. Also do not warn for + -- trivial subprograms. + + if (not Present (S) + or else not Is_Dispatching_Operation (S)) + and then not Is_Trivial_Subprogram (Scope (E)) + then + Error_Msg_NE -- CODEFIX + ("?u?formal parameter & is not referenced!", + E, Spec_E); + end if; + end; end if; end if; --- /dev/null new file mode 100644 +++ gcc/testsuite/gnat.dg/warn29.adb @@ -0,0 +1,11 @@ +-- { dg-do compile } +-- { dg-options "-gnatwa" } + +with Text_IO; use Text_IO; + +package body Warn29 is + procedure P (X : T; Y : Integer) is + begin + Put_Line ("hello"); + end P; +end Warn29; --- /dev/null new file mode 100644 +++ gcc/testsuite/gnat.dg/warn29.ads @@ -0,0 +1,4 @@ +package Warn29 is + type T is tagged null record; + procedure P (X : T; Y : Integer); +end Warn29;