From patchwork Wed May 21 11:05:33 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaud Charlet X-Patchwork-Id: 351102 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 63D4414008A for ; Wed, 21 May 2014 21:05:45 +1000 (EST) Authentication-Results: ozlabs.org; dkim=pass reason="1024-bit key; unprotected key" header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=AOePkUCo; dkim-adsp=none (unprotected policy); dkim-atps=neutral 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=IoyMLINZAhO9uGSLVJrlZoNKHu7IG4Y0gS224K9VtB8XheEBbJ 6KWAuIWuMhb3Mru/rye7S8I9+JyVONZ2rfrCuWEPKFSD8TnAT2O/WABWy1UllPi9 ZZpAKg3tjHi1SV7tQdD3Xx2G7BBLUKKVsZo2R4/rmvRxf5ZsBOhVOMSyg= 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=xgwm+RTwOUtdN3bo4VXay3wTTCY=; b=AOePkUCoDHtHfIkdKiei 0Bfkw9e0sNsEyBmXi1QC8z/CHdHcp7FMA79ptWEvW5F5XUR38KQ1QrBN41tGB+j8 pzaCHFA8Djs1M/h0UitQy/4NYXFl7d0z5lYdOuY9GXjQ40/dV5DnLIKn38tKIue1 2hUKkaV0MleaTxm1Fb+2WVc= Received: (qmail 20220 invoked by alias); 21 May 2014 11:05:38 -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 20210 invoked by uid 89); 21 May 2014 11:05:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 21 May 2014 11:05:35 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 5DBAE1161A9; Wed, 21 May 2014 07:05:33 -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 DEnpEyDzDC6K; Wed, 21 May 2014 07:05:33 -0400 (EDT) Received: from kwai.gnat.com (kwai.gnat.com [205.232.38.4]) by rock.gnat.com (Postfix) with ESMTP id 48962116117; Wed, 21 May 2014 07:05:33 -0400 (EDT) Received: by kwai.gnat.com (Postfix, from userid 4192) id 4590D91978; Wed, 21 May 2014 07:05:33 -0400 (EDT) Date: Wed, 21 May 2014 07:05:33 -0400 From: Arnaud Charlet To: gcc-patches@gcc.gnu.org Cc: Robert Dewar Subject: [Ada] Clearer documentation of -gnatw.g and -gnatyg switches Message-ID: <20140521110533.GA10428@adacore.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) This patch provides more precise documentation of the GNAT mode warning switch -gnatw.g and the GNAT mode style switch -gnatyg, in both the users guide and the usage information. Documentation change only, no test needed. Tested on x86_64-pc-linux-gnu, committed on trunk 2014-05-21 Robert Dewar * gnat_ugn.texi: Clearly document -gnatw.g (GNAT warnings). Clearly document -gnatyg (GNAT style switches). * usage.adb: Add line line for -gnatw.g (GNAT warnings) More detail for line for -gnatyg (GNAT style switches) -gnatw.d/D is available for VMS after all. * warnsw.adb: Reorganize to eliminate duplicated code (Restore_Warnings): Add a couple of missing entries (Save_Warnings): Add a couple of missing entries. * warnsw.ads: Add missing entries to Warning_Record (not clear what the impact is). Index: usage.adb =================================================================== --- usage.adb (revision 210687) +++ usage.adb (working copy) @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -121,8 +121,8 @@ Write_Eol; -- Individual lines for switches. Write_Switch_Char outputs fourteen - -- characters, so the remaining message is allowed to be a maximum - -- of 65 characters to be comfortable in an 80 character window. + -- characters, so the remaining message is allowed to be a maximum of + -- 65 characters to be comfortable in an 80 character window. -- Line for -gnata switch @@ -494,16 +494,8 @@ Write_Line (" .C* turn off warnings for unrepped components"); Write_Line (" d turn on warnings for implicit dereference"); Write_Line (" D* turn off warnings for implicit dereference"); - - -- Switches -gnatw.d/w.D not available on VMS - - if not OpenVMS_On_Target then - Write_Line - (" .d turn on tagging of warnings with -gnatw switch"); - Write_Line - (" .D* turn off tagging of warnings with -gnatw switch"); - end if; - + Write_Line (" .d turn on tagging of warnings with -gnatw switch"); + Write_Line (" .D* turn off tagging of warnings with -gnatw switch"); Write_Line (" e treat all warnings (but not info) as errors"); Write_Line (" .e turn on every optional info/warning " & "(no exceptions)"); @@ -511,6 +503,7 @@ Write_Line (" F* turn off warnings for unreferenced formal"); Write_Line (" g*+ turn on warnings for unrecognized pragma"); Write_Line (" G turn off warnings for unrecognized pragma"); + Write_Line (" .g turn on GNAT warnings, same as Aao.sI.C.V.X"); Write_Line (" h turn on warnings for hiding declarations"); Write_Line (" H* turn off warnings for hiding declarations"); Write_Line (" .h turn on warnings for holes in records"); @@ -640,7 +633,7 @@ Write_Line (" d check no DOS line terminators"); Write_Line (" e check end/exit labels present"); Write_Line (" f check no form feeds/vertical tabs in source"); - Write_Line (" g check standard GNAT style rules"); + Write_Line (" g check standard GNAT style rules, same as ydISux"); Write_Line (" h check no horizontal tabs in source"); Write_Line (" i check if-then layout"); Write_Line (" I check mode in"); Index: gnat_ugn.texi =================================================================== --- gnat_ugn.texi (revision 210691) +++ gnat_ugn.texi (working copy) @@ -4018,7 +4018,7 @@ applications programs, it is intended only for use by the compiler and its run-time library. For documentation, see the GNAT sources. Note that @option{^-gnatg^/GNAT_INTERNAL^} implies -@option{^-gnatwae^/WARNINGS=ALL,ERRORS^} and +@option{^-gnatw.ge^/WARNINGS=GNAT,ERRORS^} and @option{^-gnatyg^/STYLE_CHECKS=GNAT^} so that all standard warnings and all standard style options are turned on. All warnings and style messages are treated as errors. @@ -5167,6 +5167,14 @@ @cindex @option{-gnatwG} (@command{gcc}) This switch suppresses warnings for unrecognized pragmas. +@item -gnatw.g +@emph{Warnings used for GNAT sources} +@cindex @option{-gnatw.g} (@command{gcc}) +This switch sets the warning categories that are used by the standard +GNAT style. Currently this is equivalent to +@option{-gnatwAao.sI.C.V.X} +but more warnings may be added in the future without advanced notice. + @item -gnatwh @emph{Activate warnings on hiding.} @cindex @option{-gnatwh} (@command{gcc}) @@ -6381,7 +6389,9 @@ @emph{GNAT style mode.} The set of style check switches is set to match that used by the GNAT sources. This may be useful when developing code that is eventually intended to be -incorporated into GNAT. For further details, see GNAT sources. +incorporated into GNAT. Currently this is equivalent to @option{-gnatwydISux}) +but additional style switches may be added to this set in the future without +advance notice. @item ^h^HTABS^ @emph{No horizontal tabs.} Index: warnsw.adb =================================================================== --- warnsw.adb (revision 210687) +++ warnsw.adb (working copy) @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2014, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,6 +29,65 @@ package body Warnsw is + -- Local Subprograms + + procedure All_Warnings (Setting : Boolean); + -- Sets all warnings off if Setting = False, and on if Setting = True + + procedure WA_Warnings; + -- Turn on all warnings set by -gnatwa (also used by -gnatw.g) + + ------------------ + -- All_Warnings -- + ------------------ + + procedure All_Warnings (Setting : Boolean) is + begin + Address_Clause_Overlay_Warnings := Setting; + Check_Unreferenced := Setting; + Check_Unreferenced_Formals := Setting; + Check_Withs := Setting; + Constant_Condition_Warnings := Setting; + Elab_Warnings := Setting; + Implementation_Unit_Warnings := Setting; + Ineffective_Inline_Warnings := Setting; + List_Body_Required_Info := Setting; + List_Inherited_Aspects := Setting; + Warn_On_Ada_2005_Compatibility := Setting; + Warn_On_Ada_2012_Compatibility := Setting; + Warn_On_All_Unread_Out_Parameters := Setting; + Warn_On_Assertion_Failure := Setting; + Warn_On_Assumed_Low_Bound := Setting; + Warn_On_Atomic_Synchronization := Setting; + Warn_On_Bad_Fixed_Value := Setting; + Warn_On_Biased_Representation := Setting; + Warn_On_Constant := Setting; + Warn_On_Deleted_Code := Setting; + Warn_On_Dereference := Setting; + Warn_On_Export_Import := Setting; + Warn_On_Hiding := Setting; + Warn_On_Modified_Unread := Setting; + Warn_On_No_Value_Assigned := Setting; + Warn_On_Non_Local_Exception := Setting; + Warn_On_Object_Renames_Function := Setting; + Warn_On_Obsolescent_Feature := Setting; + Warn_On_Overlap := Setting; + Warn_On_Overridden_Size := Setting; + Warn_On_Parameter_Order := Setting; + Warn_On_Questionable_Missing_Parens := Setting; + Warn_On_Record_Holes := Setting; + Warn_On_Redundant_Constructs := Setting; + Warn_On_Reverse_Bit_Order := Setting; + Warn_On_Standard_Redefinition := Setting; + Warn_On_Suspicious_Contract := Setting; + Warn_On_Suspicious_Modulus_Value := Setting; + Warn_On_Unchecked_Conversion := Setting; + Warn_On_Unordered_Enumeration_Type := Setting; + Warn_On_Unrecognized_Pragma := Setting; + Warn_On_Unrepped_Components := Setting; + Warn_On_Warnings_Off := Setting; + end All_Warnings; + ---------------------- -- Restore_Warnings -- ---------------------- @@ -57,6 +116,8 @@ W.List_Body_Required_Info; List_Inherited_Aspects := W.List_Inherited_Aspects; + No_Warn_On_Non_Local_Exception := + W.No_Warn_On_Non_Local_Exception; Warning_Doc_Switch := W.Warning_Doc_Switch; Warn_On_Ada_2005_Compatibility := @@ -155,6 +216,8 @@ List_Body_Required_Info; W.List_Inherited_Aspects := List_Inherited_Aspects; + W.No_Warn_On_Non_Local_Exception := + No_Warn_On_Non_Local_Exception; W.Warning_Doc_Switch := Warning_Doc_Switch; W.Warn_On_Ada_2005_Compatibility := @@ -221,7 +284,6 @@ Warn_On_Unrepped_Components; W.Warn_On_Warnings_Off := Warn_On_Warnings_Off; - return W; end Save_Warnings; @@ -257,48 +319,7 @@ Warning_Doc_Switch := False; when 'e' => - Address_Clause_Overlay_Warnings := True; - Check_Unreferenced := True; - Check_Unreferenced_Formals := True; - Check_Withs := True; - Constant_Condition_Warnings := True; - Elab_Warnings := True; - Implementation_Unit_Warnings := True; - Ineffective_Inline_Warnings := True; - List_Body_Required_Info := True; - List_Inherited_Aspects := True; - Warn_On_Ada_2005_Compatibility := True; - Warn_On_Ada_2012_Compatibility := True; - Warn_On_All_Unread_Out_Parameters := True; - Warn_On_Assertion_Failure := True; - Warn_On_Assumed_Low_Bound := True; - Warn_On_Atomic_Synchronization := True; - Warn_On_Bad_Fixed_Value := True; - Warn_On_Biased_Representation := True; - Warn_On_Constant := True; - Warn_On_Deleted_Code := True; - Warn_On_Dereference := True; - Warn_On_Export_Import := True; - Warn_On_Hiding := True; - Warn_On_Modified_Unread := True; - Warn_On_No_Value_Assigned := True; - Warn_On_Non_Local_Exception := True; - Warn_On_Object_Renames_Function := True; - Warn_On_Obsolescent_Feature := True; - Warn_On_Overlap := True; - Warn_On_Overridden_Size := True; - Warn_On_Parameter_Order := True; - Warn_On_Questionable_Missing_Parens := True; - Warn_On_Record_Holes := True; - Warn_On_Redundant_Constructs := True; - Warn_On_Reverse_Bit_Order := True; - Warn_On_Standard_Redefinition := True; - Warn_On_Suspicious_Contract := True; - Warn_On_Unchecked_Conversion := True; - Warn_On_Unordered_Enumeration_Type := True; - Warn_On_Unrecognized_Pragma := True; - Warn_On_Unrepped_Components := True; - Warn_On_Warnings_Off := True; + All_Warnings (True); when 'g' => Set_GNAT_Mode_Warnings; @@ -417,48 +438,23 @@ procedure Set_GNAT_Mode_Warnings is begin + -- Set -gnatwa warnings and no others + + All_Warnings (False); + WA_Warnings; + + -- These warnings are added to the -gnatwa set + Address_Clause_Overlay_Warnings := True; - Check_Unreferenced := True; - Check_Unreferenced_Formals := True; - Check_Withs := True; - Constant_Condition_Warnings := True; - Elab_Warnings := False; + Warn_On_Overridden_Size := True; + + -- These warnings are removed from the -gnatwa set + Implementation_Unit_Warnings := False; - Ineffective_Inline_Warnings := True; - List_Body_Required_Info := False; - List_Inherited_Aspects := False; - Warning_Doc_Switch := False; - Warn_On_Ada_2005_Compatibility := True; - Warn_On_Ada_2012_Compatibility := True; - Warn_On_All_Unread_Out_Parameters := False; - Warn_On_Assertion_Failure := True; - Warn_On_Assumed_Low_Bound := True; - Warn_On_Atomic_Synchronization := False; - Warn_On_Bad_Fixed_Value := True; - Warn_On_Biased_Representation := True; - Warn_On_Constant := True; - Warn_On_Deleted_Code := False; - Warn_On_Dereference := False; - Warn_On_Export_Import := True; - Warn_On_Hiding := False; - Warn_On_Modified_Unread := True; - Warn_On_No_Value_Assigned := True; Warn_On_Non_Local_Exception := False; - Warn_On_Object_Renames_Function := True; - Warn_On_Obsolescent_Feature := True; - Warn_On_Overlap := True; - Warn_On_Overridden_Size := True; - Warn_On_Parameter_Order := True; - Warn_On_Questionable_Missing_Parens := True; - Warn_On_Record_Holes := False; - Warn_On_Redundant_Constructs := True; + No_Warn_On_Non_Local_Exception := True; Warn_On_Reverse_Bit_Order := False; - Warn_On_Suspicious_Contract := True; - Warn_On_Unchecked_Conversion := True; - Warn_On_Unordered_Enumeration_Type := False; - Warn_On_Unrecognized_Pragma := True; Warn_On_Unrepped_Components := False; - Warn_On_Warnings_Off := False; end Set_GNAT_Mode_Warnings; ------------------------ @@ -469,80 +465,10 @@ begin case C is when 'a' => - Check_Unreferenced := True; - Check_Unreferenced_Formals := True; - Check_Withs := True; - Constant_Condition_Warnings := True; - Implementation_Unit_Warnings := True; - Ineffective_Inline_Warnings := True; - Warn_On_Ada_2005_Compatibility := True; - Warn_On_Ada_2012_Compatibility := True; - Warn_On_Assertion_Failure := True; - Warn_On_Assumed_Low_Bound := True; - Warn_On_Bad_Fixed_Value := True; - Warn_On_Biased_Representation := True; - Warn_On_Constant := True; - Warn_On_Export_Import := True; - Warn_On_Modified_Unread := True; - Warn_On_No_Value_Assigned := True; - Warn_On_Non_Local_Exception := True; - Warn_On_Object_Renames_Function := True; - Warn_On_Obsolescent_Feature := True; - Warn_On_Overlap := True; - Warn_On_Parameter_Order := True; - Warn_On_Questionable_Missing_Parens := True; - Warn_On_Redundant_Constructs := True; - Warn_On_Reverse_Bit_Order := True; - Warn_On_Suspicious_Contract := True; - Warn_On_Unchecked_Conversion := True; - Warn_On_Unrecognized_Pragma := True; - Warn_On_Unrepped_Components := True; + WA_Warnings; when 'A' => - Address_Clause_Overlay_Warnings := False; - Check_Unreferenced := False; - Check_Unreferenced_Formals := False; - Check_Withs := False; - Constant_Condition_Warnings := False; - Elab_Warnings := False; - Implementation_Unit_Warnings := False; - Ineffective_Inline_Warnings := False; - List_Body_Required_Info := False; - List_Inherited_Aspects := False; - Warning_Doc_Switch := False; - Warn_On_Ada_2005_Compatibility := False; - Warn_On_Ada_2012_Compatibility := False; - Warn_On_All_Unread_Out_Parameters := False; - Warn_On_Assertion_Failure := False; - Warn_On_Assumed_Low_Bound := False; - Warn_On_Bad_Fixed_Value := False; - Warn_On_Biased_Representation := False; - Warn_On_Constant := False; - Warn_On_Deleted_Code := False; - Warn_On_Dereference := False; - Warn_On_Export_Import := False; - Warn_On_Hiding := False; - Warn_On_Modified_Unread := False; - Warn_On_No_Value_Assigned := False; - Warn_On_Non_Local_Exception := False; - Warn_On_Object_Renames_Function := False; - Warn_On_Obsolescent_Feature := False; - Warn_On_Overlap := False; - Warn_On_Overridden_Size := False; - Warn_On_Parameter_Order := False; - Warn_On_Record_Holes := False; - Warn_On_Questionable_Missing_Parens := False; - Warn_On_Redundant_Constructs := False; - Warn_On_Reverse_Bit_Order := False; - Warn_On_Standard_Redefinition := False; - Warn_On_Suspicious_Contract := False; - Warn_On_Suspicious_Modulus_Value := False; - Warn_On_Unchecked_Conversion := False; - Warn_On_Unordered_Enumeration_Type := False; - Warn_On_Unrecognized_Pragma := False; - Warn_On_Unrepped_Components := False; - Warn_On_Warnings_Off := False; - + All_Warnings (False); No_Warn_On_Non_Local_Exception := True; when 'b' => @@ -704,4 +630,40 @@ return True; end Set_Warning_Switch; + ----------------- + -- WA_Warnings -- + ----------------- + + procedure WA_Warnings is + begin + Check_Unreferenced := True; + Check_Unreferenced_Formals := True; + Check_Withs := True; + Constant_Condition_Warnings := True; + Implementation_Unit_Warnings := True; + Ineffective_Inline_Warnings := True; + Warn_On_Ada_2005_Compatibility := True; + Warn_On_Ada_2012_Compatibility := True; + Warn_On_Assertion_Failure := True; + Warn_On_Assumed_Low_Bound := True; + Warn_On_Bad_Fixed_Value := True; + Warn_On_Biased_Representation := True; + Warn_On_Constant := True; + Warn_On_Export_Import := True; + Warn_On_Modified_Unread := True; + Warn_On_No_Value_Assigned := True; + Warn_On_Non_Local_Exception := True; + Warn_On_Object_Renames_Function := True; + Warn_On_Obsolescent_Feature := True; + Warn_On_Overlap := True; + Warn_On_Parameter_Order := True; + Warn_On_Questionable_Missing_Parens := True; + Warn_On_Redundant_Constructs := True; + Warn_On_Reverse_Bit_Order := True; + Warn_On_Suspicious_Contract := True; + Warn_On_Unchecked_Conversion := True; + Warn_On_Unrecognized_Pragma := True; + Warn_On_Unrepped_Components := True; + end WA_Warnings; + end Warnsw; Index: warnsw.ads =================================================================== --- warnsw.ads (revision 210687) +++ warnsw.ads (working copy) @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2014, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -71,6 +71,7 @@ Ineffective_Inline_Warnings : Boolean; List_Body_Required_Info : Boolean; List_Inherited_Aspects : Boolean; + No_Warn_On_Non_Local_Exception : Boolean; Warning_Doc_Switch : Boolean; Warn_On_Ada_2005_Compatibility : Boolean; Warn_On_Ada_2012_Compatibility : Boolean; @@ -99,6 +100,7 @@ Warn_On_Reverse_Bit_Order : Boolean; Warn_On_Standard_Redefinition : Boolean; Warn_On_Suspicious_Contract : Boolean; + Warn_On_Suspicious_Modulus_Value : Boolean; Warn_On_Unchecked_Conversion : Boolean; Warn_On_Unordered_Enumeration_Type : Boolean; Warn_On_Unrecognized_Pragma : Boolean;