sem_warn.adb (Check_Use_Clause): Don't give no entities used msg if errors found.
authorRobert Dewar <dewar@adacore.com>
Wed, 22 Jan 2014 11:18:34 +0000 (11:18 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 22 Jan 2014 11:18:34 +0000 (12:18 +0100)
2014-01-22  Robert Dewar  <dewar@adacore.com>

* sem_warn.adb (Check_Use_Clause): Don't give no entities used
msg if errors found.
(Check_One_Unit): Same change.

2014-01-22  Robert Dewar  <dewar@adacore.com>

* ug_words: Add missing/wrong entries for VMS warning switches.
* sem_prag.adb (Check_Duplicate_Pragma): Avoid flagging parent type.

From-SVN: r206920

gcc/ada/ChangeLog
gcc/ada/gnat_ugn.texi
gcc/ada/sem_prag.adb
gcc/ada/sem_warn.adb
gcc/ada/ug_words
gcc/ada/vms_data.ads

index 68a641495b35a3cfb61b2e88c8c77848a36a2f42..8afa4db1985f21b2339ea9ba17fe2eb80c2b6e33 100644 (file)
@@ -1,3 +1,14 @@
+2014-01-22  Robert Dewar  <dewar@adacore.com>
+
+       * sem_warn.adb (Check_Use_Clause): Don't give no entities used
+       msg if errors found.
+       (Check_One_Unit): Same change.
+
+2014-01-22  Robert Dewar  <dewar@adacore.com>
+
+       * ug_words: Add missing/wrong entries for VMS warning switches.
+       * sem_prag.adb (Check_Duplicate_Pragma): Avoid flagging parent type.
+
 2014-01-22  Jerome Guitton  <guitton@adacore.com>
 
        * mlib-tgt-specific-vxworks.adb (Get_Target_Suffix): Replace xscale by
index c84b0a9430bab607686cefa394e4885993e26f7f..3649149969672c2cd09932f7dfd7eedd99560d76 100644 (file)
@@ -5339,6 +5339,22 @@ an explicit @option{-gnatws} or
 implicit @option{-gnatwe} that is activated by the
 use of @option{-gnatg}.
 
+@item -gnatw.n
+@emph{Activate warnings on atomic synchronization.}
+@cindex @option{-gnatw.n} (@command{gcc})
+@cindex Atomic Synchronization, warnings
+This switch actives warnings when an access to an atomic variable
+requires the generation of atomic synchronization code. These
+warnings are off by default and this warning is not included
+in @code{-gnatwa}.
+
+@item -gnatw.N
+@emph{Suppress warnings on atomic synchronization.}
+@cindex @option{-gnatw.n} (@command{gcc})
+@cindex Atomic Synchronization, warnings
+This switch suppresses warnings when an access to an atomic variable
+requires the generation of atomic synchronization code.
+
 @item -gnatwo
 @emph{Activate warnings on address clause overlays.}
 @cindex @option{-gnatwo} (@command{gcc})
index 347feb2206f262f749907f16baae0c02b3cd78ae..53be17ce68c357b4457051b770114698cf27e4d7 100644 (file)
@@ -2823,6 +2823,8 @@ package body Sem_Prag is
       --  Check if a rep item of the same name as the current pragma is already
       --  chained as a rep pragma to the given entity. If so give a message
       --  about the duplicate, and then raise Pragma_Exit so does not return.
+      --  Note that if E is a type, then this routine avoids flagging a pragma
+      --  which applies to a parent type from which E is derived.
 
       procedure Check_Duplicated_Export_Name (Nam : Node_Id);
       --  Nam is an N_String_Literal node containing the external name set by
@@ -3924,6 +3926,36 @@ package body Sem_Prag is
          P := Get_Rep_Item (E, Pragma_Name (N), Check_Parents => False);
 
          if Present (P) then
+
+            --  If the entity is a type, then we have to make sure that the
+            --  ostensible duplicate is not for a parent type from which this
+            --  type is derived.
+
+            if Is_Type (E) then
+               if Nkind (P) = N_Pragma then
+                  declare
+                     Args : constant List_Id :=
+                              Pragma_Argument_Associations (P);
+                  begin
+                     if Present (Args)
+                       and then Is_Entity_Name (Expression (First (Args)))
+                       and then Is_Type (Entity (Expression (First (Args))))
+                       and then Entity (Expression (First (Args))) /= E
+                     then
+                        return;
+                     end if;
+                  end;
+
+               elsif Nkind (P) = N_Aspect_Specification
+                 and then Is_Type (Entity (P))
+                 and then Entity (P) /= E
+               then
+                  return;
+               end if;
+            end if;
+
+            --  Here we have a definite duplicate
+
             Error_Msg_Name_1 := Pragma_Name (N);
             Error_Msg_Sloc := Sloc (P);
 
index 5603464f15e4c75ab22185e8909322d320d87f1b..c2bef7add10bd768ce3fa9af1b9e7fb10479c45f 100644 (file)
@@ -2130,11 +2130,18 @@ package body Sem_Warn is
                   Nam := First (Names (N));
                   while Present (Nam) loop
                      if Entity (Nam) = Pack then
-                        Error_Msg_Qual_Level := 1;
-                        Error_Msg_NE -- CODEFIX
-                          ("?u?no entities of package& are referenced!",
-                             Nam, Pack);
-                        Error_Msg_Qual_Level := 0;
+
+                        --  Suppress message if any serious errors detected
+                        --  that turn off expansion, and thus result in false
+                        --  positives for this warning.
+
+                        if Serious_Errors_Detected = 0 then
+                           Error_Msg_Qual_Level := 1;
+                           Error_Msg_NE -- CODEFIX
+                             ("?u?no entities of package& are referenced!",
+                                Nam, Pack);
+                           Error_Msg_Qual_Level := 0;
+                        end if;
                      end if;
 
                      Next (Nam);
@@ -2402,8 +2409,13 @@ package body Sem_Warn is
                            --  Else give the warning
 
                            else
-                              if not
-                                Has_Unreferenced (Entity (Name (Item)))
+                              --  Warn if we unreferenced flag set and we have
+                              --  not had serious errors. The reason we inhibit
+                              --  the message if there are errors is to prevent
+                              --  false positives from disabling expansion.
+
+                              if not Has_Unreferenced (Entity (Name (Item)))
+                                and then Serious_Errors_Detected = 0
                               then
                                  Error_Msg_N -- CODEFIX
                                    ("?u?no entities of & are referenced!",
@@ -2541,6 +2553,8 @@ package body Sem_Warn is
    --  Start of processing for Check_Unused_Withs
 
    begin
+      --  Immediate return if no semantics or warning flag not set
+
       if not Opt.Check_Withs or else Operating_Mode = Check_Syntax then
          return;
       end if;
index 1f73288481ae3919e8e153c842a9f6f1965d9cef..c16da0402079cac8075711849979ae0cc6852283 100644 (file)
@@ -160,17 +160,25 @@ gcc -c          ^ GNAT COMPILE
 -gnatw.H        ^ /WARNINGS=NOAVOIDGAPS
 -gnatwi         ^ /WARNINGS=IMPLEMENTATION
 -gnatwI         ^ /WARNINGS=NOIMPLEMENTATION
+-gnatw.i        ^ /WARNINGS=OVERLAPPING_ACTUALS
+-gnatw.I        ^ /WARNINGS=NOOVERLAPPING_ACTUALS
 -gnatwj         ^ /WARNINGS=OBSOLESCENT
 -gnatwJ         ^ /WARNINGS=NOOBSOLESCENT
 -gnatwk         ^ /WARNINGS=CONSTANT_VARIABLES
 -gnatwK         ^ /WARNINGS=NOCONSTANT_VARIABLES
+-gnatw.k        ^ /WARNINGS=STANDARD_REDEFINITION
+-gnatw.K        ^ /WARNINGS=NOSTANDARD_REDEFINITION
 -gnatwl         ^ /WARNINGS=ELABORATION
 -gnatwL         ^ /WARNINGS=NOELABORATION
+-gnatwl         ^ /WARNINGS=INHERITED_ASPECTS
+-gnatwL         ^ /WARNINGS=NOINHERITED_ASPECTS
 -gnatwm         ^ /WARNINGS=MODIFIED_UNREF
 -gnatwM         ^ /WARNINGS=NOMODIFIED_UNREF
 -gnatw.m        ^ /WARNINGS=SUSPICIOUS_MODULUES
 -gnatw.M        ^ /WARNINGS=NOSUSPICIOUS_MODULUES
 -gnatwn         ^ /WARNINGS=NORMAL
+-gnatw.n        ^ /WARNINGS=ATOMIC_SYNCHRONIZATION
+-gnatw.N        ^ /WARNINGS=NOATOMIC_SYNCHRONIZATION
 -gnatwo         ^ /WARNINGS=OVERLAYS
 -gnatwO         ^ /WARNINGS=NOOVERLAYS
 -gnatw.o        ^ /WARNINGS=OUT_PARAM_UNREF
@@ -188,14 +196,20 @@ gcc -c          ^ GNAT COMPILE
 -gnatwr         ^ /WARNINGS=REDUNDANT
 -gnatwR         ^ /WARNINGS=NOREDUNDANT
 -gnatws         ^ /WARNINGS=SUPPRESS
+-gnatw.s        ^ /WARNINGS=OVERRIDING_SIZE
+-gnatw.S        ^ /WARNINGS=NOOVERRIDING_SIZE
 -gnatwt         ^ /WARNINGS=DELETED_CODE
 -gnatwT         ^ /WARNINGS=NODELETED_CODE
+-gnatw.t        ^ /WARNINGS=SUSPICIOUS_CONTRACT
+-gnatw.T        ^ /WARNINGS=NOSUSPICIOUS_CONTRACT
 -gnatwu         ^ /WARNINGS=UNUSED
 -gnatwU         ^ /WARNINGS=NOUNUSED
 -gnatw.u        ^ /WARNINGS=UNORDERED_ENUMERATIONS
 -gnatw.U        ^ /WARNINGS=NOUNORDERED_ENUMERATIONS
 -gnatwv         ^ /WARNINGS=VARIABLES_UNINITIALIZED
 -gnatwV         ^ /WARNINGS=NOVARIABLES_UNINITIALIZED
+-gnatw.v        ^ /WARNINGS=REVERSE_BIT_ORDER
+-gnatw.V        ^ /WARNINGS=NOREVERSE_BIT_ORDER
 -gnatww         ^ /WARNINGS=LOWBOUND_ASSUMED
 -gnatwW         ^ /WARNINGS=NOLOWBOUND_ASSUMED
 -gnatw.w        ^ /WARNINGS=WARNINGS_OFF_PRAGMAS
@@ -204,8 +218,8 @@ gcc -c          ^ GNAT COMPILE
 -gnatwX         ^ /WARNINGS=NOIMPORT_EXPORT_PRAGMAS
 -gnatw.x        ^ /WARNINGS=LOCAL_RAISE_HANDLING
 -gnatw.X        ^ /WARNINGS=NOLOCAL_RAISE_HANDLING
--gnatwy         ^ /WARNINGS=ADA_2005_COMPATIBILITY
--gnatwY         ^ /WARNINGS=NOADA_2005_COMPATIBILITY
+-gnatwy         ^ /WARNINGS=ADA_COMPATIBILITY
+-gnatwY         ^ /WARNINGS=NOADA_COMPATIBILITY
 -gnatw.y        ^ /WARNINGS=WHY_SPEC_NEEDS_BODY
 -gnatw.Y        ^ /WARNINGS=NOWHY_SPEC_NEEDS_BODY
 -gnatwz         ^ /WARNINGS=UNCHECKED_CONVERSIONS
@@ -250,3 +264,4 @@ stderr          ^ SYS$ERROR
 -H32            ^ /32_MALLOC
 -H64            ^ /64_MALLOC
 -Wall           ^ /WARNINGS=ALL_GCC
+-Wuninitialized ^ /WARNINGS=UNINITIALIZED
index aa22577efce1baa1d98308b76d71b42eb9e9d578..c3ad7565be6049dd6514a64193ebf500cd613579 100644 (file)
@@ -3132,6 +3132,10 @@ package VMS_Data is
                                                "-gnatwi "                  &
                                             "NOIMPLEMENTATION "            &
                                                "-gnatwI "                  &
+                                            "OVERLAPPING_ACTUALS "         &
+                                               "-gnatw.i "                 &
+                                            "NOOVERLAPPING_ACTUALS "       &
+                                               "-gnatw.I "                 &
                                             "OBSOLESCENT "                 &
                                                "-gnatwj "                  &
                                             "NOOBSOLESCENT "               &
@@ -3148,6 +3152,10 @@ package VMS_Data is
                                                "-gnatwl "                  &
                                             "NOELABORATION "               &
                                                "-gnatwL "                  &
+                                            "INHERITED_ASPECTS "           &
+                                               "-gnatw.l "                 &
+                                            "NOINHERITED_ASPECTS "         &
+                                               "-gnatw.L "                 &
                                             "MODIFIED_UNREF "              &
                                                "-gnatwm "                  &
                                             "NOMODIFIED_UNREF "            &
@@ -3158,6 +3166,10 @@ package VMS_Data is
                                                "-gnatw.M "                 &
                                             "NORMAL "                      &
                                                "-gnatwn "                  &
+                                            "ATOMIC_SYNCHRONIZATION "      &
+                                               "-gnatw.n "                 &
+                                            "NOATOMIC_SYNCHRONIZATION "    &
+                                               "-gnatw.N "                 &
                                             "OVERLAYS "                    &
                                                "-gnatwo "                  &
                                             "NOOVERLAYS "                  &
@@ -3170,12 +3182,12 @@ package VMS_Data is
                                                "-gnatwp "                  &
                                             "NOINEFFECTIVE_INLINE "        &
                                                "-gnatwP "                  &
-                                            "MISSING_PARENS "              &
-                                               "-gnatwq "                  &
                                             "PARAMETER_ORDER "             &
                                                "-gnatw.p "                 &
                                             "NOPARAMETER_ORDER "           &
                                                "-gnatw.P "                 &
+                                            "MISSING_PARENS "              &
+                                               "-gnatwq "                  &
                                             "NOMISSING_PARENS "            &
                                                "-gnatwQ "                  &
                                             "REDUNDANT "                   &
@@ -3196,6 +3208,10 @@ package VMS_Data is
                                                "-gnatwt "                  &
                                             "NODELETED_CODE "              &
                                                "-gnatwT "                  &
+                                            "SUSPICIOUS_CONTRACT "         &
+                                               "-gnatw.t "                 &
+                                            "NOSUSPICIOUS_CONTRACT "       &
+                                               "-gnatw.T "                 &
                                             "UNINITIALIZED "               &
                                                "-Wuninitialized "          &
                                             "UNUSED "                      &
@@ -3230,9 +3246,9 @@ package VMS_Data is
                                                "-gnatw.x "                 &
                                             "NOLOCAL_RAISE_HANDLING "      &
                                                "-gnatw.X "                 &
-                                            "ADA_2005_COMPATIBILITY "      &
+                                            "ADA_COMPATIBILITY "           &
                                                "-gnatwy "                  &
-                                            "NOADA_2005_COMPATIBILITY "    &
+                                            "NOADA_COMPATIBILITY "         &
                                                "-gnatwY "                  &
                                             "WHY_SPEC_NEEDS_BODY "         &
                                                "-gnatw.y "                 &
@@ -3256,272 +3272,382 @@ package VMS_Data is
    --   error. Second, if the compiler detects a situation that is sure to
    --   raise an exception at runtime, it generates a warning message.
    --
-   --   You may specify the following keywords to change this behavior:
-   --
-   --   DEFAULT (D)             The default behavior above.
-   --
-   --   ALL                     Activate all optional warnings.
-   --                           Activates most optional warning messages,
-   --                           see remaining list in this section for
-   --                           details on optional warning messages that
-   --                           can be individually controlled.
-   --                           The warnings that are not turned on by
-   --                           this option are BIASED_ROUNDING,
-   --                           IMPLICIT_DEREFERENCE, HIDING and
-   --                           ELABORATION. All other optional Ada
-   --                           warnings are turned on.
-   --
-   --   EVERY                   Activate every optional warning.
-   --                           Activates all optional warnings, including
-   --                           those listed above as exceptions for ALL.
-   --
-   --   NOALL                   Suppress all optional errors.
-   --                           Suppresses all optional warning messages
-   --                           that can be activated by option ALL.
-   --
-   --   ALL_GCC                 Request additional messages from the GCC
-   --                           backend.  Most of these are not relevant
-   --                           to Ada.
-   --
-   --   CONDITIONALS            Activate warnings for conditional
-   --                           Expressions used in tests that are known
-   --                           to be True or False at compile time. The
-   --                           default is that such warnings are not
-   --                           generated.
+   --   You may specify the following keywords to change this behavior.
+   --
+   --   DEFAULT (D)               The default behavior. This includes the
+   --                             following categories of warnings:
+   --
+   --                               ADA_COMPATIBILITY
+   --                               ADDRESS_CLAUSE_OVERLAY
+   --                               BIASED_REPRESENTATION
+   --                               IMPORT_EXPORT_PRAGMAS
+   --                               FAILING_ASSERTIONS
+   --                               IMPLEMENTATION
+   --                               LOWBOUND_ASSUMED
+   --                               MISSING_PARENS
+   --                               OVERLAPPING_ACTUALS
+   --                               REVERSE_BIT_ORDER
+   --                               SUSPICIOUS_CONTRACT
+   --                               SUSPICIOUS_MODULUS
+   --                               UNCHECKED_CONVERSIONS
+   --                               UNRECOGNIZED_PRAGMA
+   --                               VARIABLES_UNINITIALIZED
+   --
+   --                             as well as all warnings that cannot be
+   --                             individually suppressed.
+   --
+   --   ALL                       Activate all optional warnings.
+   --                             Activates the most commong used optional
+   --                             warning messages. The warnings that are not
+   --                             turned on by this are:
+   --
+   --                               ADDRESS_CLAUSE_OVERLAY
+   --                               ATOMIC_SYNCHRONIZATION
+   --                               AVOID_GAPS
+   --                               BAD_FIXED_VALUE
+   --                               BIASED_ROUNDING
+   --                               DELETED_CODE
+   --                               ELABORATION
+   --                               HIDING
+   --                               IMPLICIT_DEREFERENCE
+   --                               INHERITED_ASPECTS
+   --                               OUT_PARAM_UNREF
+   --                               OVERLAPPING_ACTUALS
+   --                               OVERRIDING_SIZE
+   --                               STANDARD_REDEFINITION
+   --                               SUSPICIOUS_MODULUS
+   --                               UNORDERED_ENUMERATION
+   --                               WARNINGS_OFF_PRAGMAS
+   --                               WHY_BODY_NEEDED
+   --
+   --                             All other optional warnings are turned on.
+   --
+   --   OPTIONAL                  Turn on standard optional warnings.
+   --                             This has the same effect as ALL.
+   --
+   --   NOALL                     Suppress all optional errors.
+   --                             Suppresses all optional warning messages
+   --                             including those not activated by ALL.
+   --
+   --   NOOPTIONAL                Turn off standard optional warnings.
+   --                             This has the same effect as NOALL
+   --
+   --   EVERY                     Activate every optional warning.
+   --                             Activates all optional warnings, including
+   --                             those listed above as exceptions for ALL.
+   --
+   --   ALL_GCC                   Request additional messages from the GCC
+   --                             backend. Most of these are not Ada-relevant.
+   --
+   --   UNINITIALIZED             Activate warnings for uninitialized
+   --                             variables. This is a GCC option, not an Ada
+   --                             option. You must also specify the /OPTIMIZE
+   --                             qualifier with a value other than NONE (in
+   --                             other words, this option is effective only
+   --                             if optimization is turned on).
+
+   --   ERRORS                    Warning messages are to be treated as errors.
+   --                             The warning string still appears, but the
+   --                             warning messages are counted as errors, and
+   --                             prevent the generation of an object file.
+   --
+   --   SUPPRESS                  Completely suppress the output of all warning
+   --                             messages. Same as /NOWARNINGS.
+   --
+   --   NORMAL                    Sets normal warning mode, in which enabled
+   --                             warnings are issued and treated as warnings
+   --                             rather than errors. This is the default mode.
+   --                             It can be used to cancel the effect of an
+   --                             explicit /WARNINGS=SUPPRESS or
+   --                             /WARNINGS=ERRORS. It also cancels the effect
+   --                             of the implicit /WARNINGS=ERRORS that is
+   --                             activated by the use of /STYLE=GNAT.
+   --
+   --   TAG_WARNINGS              Causes the string [xxx] to be added to
+   --                             warnings that are controlled by the warning
+   --                             switch -gnat??. See below for list of these
+   --                             equivalent switch names.
    --
-   --   NOCONDITIONALS          Suppress warnings for conditional
-   --                           expressions used in tests that are known
-   --                           to be True or False at compile time.
+   --   NOTAG_WARNINGS          Turns off warning tag output (default setting).
    --
-   --   IMPLICIT_DEREFERENCE    Activate warnings on implicit dereferencing.
-   --                           The use of a prefix of an access type in an
-   --                           indexed component, slice, or selected component
-   --                           without an explicit .all will generate
-   --                           a warning. With this warning enabled, access
-   --                           checks occur only at points where an explicit
-   --                           .all appears in the source code (assuming no
-   --                           warnings are generated as a result of this
-   --                           option). The default is that such warnings are
-   --                           not generated. Note that /WARNINGS=ALL does not
-   --                           affect the setting of this warning option.
-   --
-   --   NOIMPLICIT_DEREFERENCE  Suppress warnings on implicit dereferencing.
-   --                           in indexed components, slices, and selected
-   --                           components.
-   --
-   --   ELABORATION             Activate warnings on missing pragma
-   --                           Elaborate_All statements. The default is
-   --                           that such warnings are not generated.
-   --
-   --   NOELABORATION           Suppress warnings on missing pragma
-   --                           Elaborate_All statements.
-   --
-   --   ERRORS                  Warning messages are to be treated as errors.
-   --                           The warning string still appears, but the
-   --                           warning messages are counted as errors, and
-   --                           prevent the generation of an object file.
+   --   The remaining entries control individual warning categories. If one
+   --   of these options is preceded by NO (e.g. NOAVOID_GAPS), then the
+   --   corresponding class of warnings is suppressed. The -gnatwxx tag
+   --   below the name indicates the non-VMS warning switch option. This is
+   --   used in the warning tags generated by TAG_WARNINGS (above)
+   --
+   --   ADA_COMPATIBILITY       Activate warnings for Ada compatibility issues.
+   --   (-gnatwy)               This generates warnings for usages which are
+   --                           legal, but may cause difficulties with later
+   --                           Ada versions (e.g. the use of INTERFACE as an
+   --                           identifier, which is legal in Ada 85, but in
+   --                           Ada 2005, this is a reserved word).
+   --
+   --   ATOMIC_SYNCHRONIZATION  Activate info msgs for atomic synchronization.
+   --   (-gnatw.n)              This generates information messages when an
+   --                           access to an atomic variable requires the
+   --                           generation of atomic synchronization code.
+   --
+   --   AVOID_GAPS              Activate warnings for gaps in records.
+   --   (-gnatw.h)              This outputs a warning if a representation
+   --                           clause for a record leaves unallocated bits.
+   --
+   --   BAD_FIXED_VALUES        Activate warnings on bad fixed values.
+   --   (-gnatwb)               When this is enabled, a fixed-type literal
+   --                           will generate a warning if its value does not
+   --                           correspond to an exact value of the type and
+   --                           is thus subject to rounding.
+   --
+   --   BIASED_REPRESENTATION   Activate warnings for biased representations.
+   --   (-gnatw.b)              A warning will be generated if a size clause
+   --                           or a component clause forces use of a biased
+   --                           representation (e.g. range 1..5 with size 2).
+   --
+   --   CONDITIONALS            Activate warnings for conditional expressions
+   --   (-gnatwc)               in tests where the expression is known to
+   --                           be True or False at compile time.
+   --
+   --   DELETED_CODE            Activate warning for conditional deleted code.
+   --   (-gnatwt)               This option generates warnings for tracking of
+   --                           code in conditionals (IF and CASE statements)
+   --                           that is detected to be dead code which cannot
+   --                           be executed, and which is removed by the
+   --                           front end. This may be useful for detecting
+   --                           deactivated code in certified applications.
+   --
+   --   CONSTANT_VARIABLES      Activate warnings on constant variables.
+   --   (-gnatwk)               A warning is output for a variable which could
+   --                           have been declared as a constant.
+   --
+   --   ELABORATION             Activate warnings on missing pragma Elaborate
+   --   (-gnatwl)               and Elaborate_All statements.
+   --
+   --   FAILING_ASSERTIONS      Activate warnings on failing assertions.
+   --   (-gnatw.a)              Generates a warning for assertions that are
+   --                           sure to fail.
    --
    --   HIDING                  Activate warnings on hiding declarations.
-   --                           A declaration is considered hiding if it is
-   --                           for a non-overloadable entity, and it declares
+   --   (-gnatwh)               A declaration is considered hiding if it is
+   --                           for a non-overloadable entity, and declares
    --                           an entity with the same name as some other
-   --                           entity that is directly or use-visible. The
-   --                           default is that such warnings are not
-   --                           generated.
+   --                           entity that is directly or use-visible.
    --
-   --   NOHIDING                Suppress warnings on hiding declarations.
+   --   IMPORT_EXPORT_PRAGMAS   Activate warnings on import-export pragmas.
+   --   (-gnatwx)               This generates a warning on an Export or Import
+   --                           pragma when the compiler detects a possible
+   --                           conflict between the Ada and foreign language
+   --                           calling sequences. For example, the use of
+   --                           default parameters in a convention C procedure
+   --                           is dubious because the C compiler cannot supply
+   --                           the proper default, so a warning is issued.
    --
    --   IMPLEMENTATION          Activate warnings for a with of an internal
-   --                           GNAT implementation unit, defined as any unit
-   --                           from the Ada, Interfaces, GNAT, DEC or
-   --                           System hierarchies that is not documented in
-   --                           either the Ada Reference Manual or the GNAT
-   --                           Programmer's Reference Manual. Such units are
-   --                           intended only for internal implementation
-   --                           purposes and should not be with'ed by user
-   --                           programs. The default is that such warnings
-   --                           are generated.
-   --
-   --   NOIMPLEMENTATION        Disables warnings for a with of an internal
-   --                           GNAT implementation unit.
-   --
-   --   INEFFECTIVE_INLINE      Activate warnings on ineffective pragma Inlines
-   --                           Activates warnings for failure of front end
-   --                           inlining (activated by /INLINE=FULL) to inline
-   --                           a particular call. There are many reasons for
-   --                           not being able to inline a call, including most
+   --   (-gnatwi)               GNAT implementation unit, defined as any unit
+   --                           from the Ada, Interfaces, GNAT, DEC or System
+   --                           hierarchies that is not documented in the
+   --                           Ada Reference Manual or the GNAT Programmer's
+   --                           Reference Manual. Such units are intended only
+   --                           for internal implementation purposes and may
+   --                           change from version to veresion, and should
+   --                           not be with'ed by user programs.
+   --
+   --   IMPLICIT_DEREFERENCE    Activate warnings on implicit dereferencing.
+   --   (-gnatwd)               The use of a prefix of an access type in an
+   --                           indexed component, slice, or selected component
+   --                           without an explicit .all will generate a
+   --                           warning. When this warning is enabled, and no
+   --                           warnings of this type are generated, access
+   --                           checks occur only at points where the source
+   --                           program contains an explicit use of .all.
+   --
+   --   INEFFECTIVE_INLINE      Activate warnings on ineffective Inlines.
+   --   (-gnatwp)               Activates warnings for failure of front end
+   --                           inlining (activated by /INLINE=FULL) to
+   --                           inline a particular call when a pragma Inline
+   --                           applies. There are many reasons for not
+   --                           being able to inline a call, including most
    --                           commonly that the call is too complex to
    --                           inline. This warning can also be turned on
    --                           using /INLINE=FULL.
    --
-   --   NOINEFFECTIVE_INLINE    Suppress warnings on ineffective pragma Inlines
-   --                           Suppresses warnings on ineffective pragma
-   --                           Inlines. If the inlining mechanism cannot
-   --                           inline a call, it will simply ignore the
-   --                           request silently.
+   --   INHERITED_ASPECTS       Activate info messages for inherited aspects.
+   --   (-gantw.l)              Outputs information messages for tagged types
+   --                           that inherit aspects from a parent.
    --
-   --   MISSING_COMPONENT_CLAUSES
-   --                           Activate warnings for cases when there are
-   --                           component clauses for a record type, but not
-   --                           for every component of the record.
+   --   LOCAL_RAISE_HANDLING    Activate warnings for No_Exception_Propagation.
+   --   (-gnatw.x)              This generates warnings for exception usage
+   --                           when the No_Exception_Propagation restriction
+   --                           is in effect. Warnings are given for implicit
+   --                           or explicit exception raises which are not
+   --                           covered by a local handler, and for exception
+   --                           handlers which do not cover a local raise.
    --
-   --   NOMISSING_COMPONENT_CLAUSES
-   --                           Suppress warnings for cases when there are
-   --                           missing component clauses for a record type.
+   --   LOWBOUND_ASSUMED        Activate warnings for low bound assumptions.
+   --   (-gnatww)               Outputs warnings if code appears to depend on
+   --                           an assumption about the lower bound of one of
+   --                           the subprogram parameters (for example using
+   --                           S(1 .. 5) instead of S(S'First .. S'First + 4).
    --
-   --   MISSING_PARENS
-   --                           Activate warnings for cases where parentheses
+   --   MISSING_COMPONENT_CLAUSES
+   --   (-gnatw.c)              Activate warnings for unrepped component.
+   --                           Generates a warning for a record component
+   --                           which does not have a component clause if
+   --                           at least one component claused is present
+   --                           for some other component of the record.
+   --
+   --   MISSING_PARENS          Activate warnings for missing parentheses.
+   --   (-gnatwq)               Outputs a warning for cases where parentheses
    --                           are not used and the result is potential
    --                           ambiguity from a reader's point of view.
    --                           For example (not a > b) when a and b are
    --                           modular means (not (a) > b) and very likely
    --                           the programmer intended (not (a > b)).
    --
-   --   NOMISSING_PARENS
-   --                           Suppress warnings for cases where parentheses
-   --                           are not used and the result is potential
-   --                           ambiguity from a reader's point of view.
-   --
-   --   MODIFIED_UNREF          Activates warnings for variables that are
-   --                           assigned (using an initialization value or with
-   --                           one or more assignment statements) but whose
-   --                           value is never read. The warning is suppressed
-   --                           for volatile variables and also for variables
+   --   MODIFIED_UNREF          Activate warning for assigned but not read.
+   --   (-gnatwm)               Outputs a warning for variables that are
+   --                           assigned (using an initialization value or an
+   --                           assignment statements) but whose value is
+   --                           never read. The warning is suppressed for
+   --                           volatile variables and also for variables
    --                           that are renamings of other variables or for
-   --                           which an address clause is given. This warning
-   --                           can also be turned on using /WARNINGS/OPTIONAL.
-   --
-   --   NOMODIFIED_UNREF        Disables warnings for variables that are
-   --                           assigned or initialized, but never read.
+   --                           which an address clause is given.
    --
-   --   NORMAL                  Sets normal warning mode, in which enabled
-   --                           warnings are issued and treated as warnings
-   --                           rather than errors. This is the default mode.
-   --                           It can be used to cancel the effect of an
-   --                           explicit /WARNINGS=SUPPRESS or
-   --                           /WARNINGS=ERRORS. It also cancels the effect
-   --                           of the implicit /WARNINGS=ERRORS that is
-   --                           activated by the use of /STYLE=GNAT.
+   --   OBJECT_RENAME           Activate warnings for non limited objects
+   --   (-gnatw.r)              renaming parameterless functions.
    --
    --   OBSOLESCENT             Activates warnings for calls to subprograms
-   --                           marked with pragma Obsolescent and for use of
+   --   (-gnatwj)               marked with pragma Obsolescent and for use of
    --                           features in Annex J of the Ada Reference
    --                           Manual. In the case of Annex J, not all
-   --                           features are flagged. In particular use of the
-   --                           renamed packages (like Text_IO), use of package
-   --                           ASCII and use of the attribute 'Constrained are
-   --                           not flagged, since these are very common and
-   --                           would generate many annoying positive warnings.
-   --                           The default is that such warnings are not
-   --                           generated.
-   --
-   --   NOOBSOLESCENT           Disables warnings on use of obsolescent
-   --                           features.
-   --
-   --   OBJECT_RENAME           Activate warnings for non limited objects
-   --                           renaming parameterless functions.
-   --
-   --   NOOBJECT_RENAME         Suppress warnings for non limited objects
-   --                           renaming parameterless functions.
-   --
-   --   OPTIONAL                Equivalent to ALL.
-   --
-   --   NOOPTIONAL              Equivalent to NOALL.
+   --                           features are flagged. In particular use of
+   --                           the renamed packages (like Text_IO), use of
+   --                           package ASCII,  and use of the attribute
+   --                           'Constrained are not flagged, since these are
+   --                           common and would generate many annoying
+   --                           false-positive warnings.
+   --
+   --   OUT_PARAM_UNREF         Activate warnings on unreferenced OUT params.
+   --   (-gantw.o)              This switch activates warnings for variables
+   --                           that are modified by using them as actuals for
+   --                           a call to a procedure with an out mode formal,
+   --                           where the resulting assigned value is never
+   --                           read. It is applicable in the case where there
+   --                           is more than one out mode formal. If there is
+   --                           only one out mode formal, the warning is issued
+   --                           by default (controlled by UNUSED). The warning
+   --                           is suppressed for volatile variables and also
+   --                           for variables that are renamings of other
+   --                           variables or for which an address clause
+   --                           is given.
+   --
+   --   OVERLAPPING_ACTUALS     Activate warnings on overlapping actuals.
+   --   (-gnatw.i)              Enables a warning on statically detectable
+   --                           overlapping actuals in a subprogram call,
+   --                           when one of the actuals is an in-out
+   --                           parameter, and the types of the actuals
+   --                           are not by-copy types.
    --
    --   OVERLAYS                Activate warnings for possibly unintended
-   --                           initialization effects of defining address
-   --                           clauses that cause one variable to overlap
-   --                           another. The default is that such warnings
-   --                           are generated.
-   --
-   --   NOOVERLAYS              Suppress warnings on possibly unintended
-   --                           initialization effects of defining address
+   --   (-gnatwo)               initialization effects of defining address
    --                           clauses that cause one variable to overlap
    --                           another.
    --
-   --   REDUNDANT               Activate warnings for redundant constructs.
-   --                           In particular assignments of a variable to
-   --                           itself, and a type conversion that converts
-   --                           an object to its own type. The default
-   --                           is that such warnings are not generated.
+   --   OVERRIDING_SIZE         Activate warning on overridden size clause.
+   --   (-gnatw.s)              Generates a warning if an explicit size clause
+   --                           is overridden by a component clause in a record
+   --                           or a component size in an array.
    --
-   --   NOREDUNDANT             Suppress warnings for redundant constructs.
+   --   PARAMETER_ORDER         Activate warnings for suspicious parameter
+   --   (-gnatw.p)              ordering. A warning is generated if positional
+   --                           ordering is used and the actuals match the
+   --                           formal names, but are in the wrong order (e.g.
+   --                           GEN (B, A), when the formals of GEN are A, B.)
+   --                           No warning is generated for named parameters,
+   --                           so GEN (A => B, B => A) would be allowed.
    --
-   --   SUPPRESS                Completely suppress the output of all warning
-   --                           messages.  Same as /NOWARNINGS.
+   --   REDUNDANT               Activate warnings for redundant constructs.
+   --   (-gnatwr)               In particular assignments of a variable to
+   --                           itself, and a type conversion that converts
+   --                           an object to its own type.
+   --
+   --   REVERSE_BIT_ORDER       Activates info messages for reverse bit order.
+   --   (-gnatw.v)              Generates information messages that show the
+   --                           effect of specifying reverse bit order for
+   --                           a record on individual components.
+   --
+   --   STANDARD_REDEFINITION   Activate warnings on standard redefinition.
+   --   (-gnatw.k)              Generates a warning message if a declaration
+   --                           declares an identifier that matches one that
+   --                           is declared in package Standard (e.g. Float).
+   --
+   --   SUSPICIOUS_CONTRACT     Activate warnings on suspicious postconditions.
+   --   (-gnatw.t)              This generates warnings if a postcondition for
+   --                           a function does not mention the result, or if
+   --                           a postcondition for a procedure depends only on
+   --                           the entry values of the parameters.
+   --
+   --   SUSPICIOUS_MODULUS      Warn on suspicious modulus values, for
+   --   (-gnatw.m)              example "mod 7" is suspicious for a size with
+   --                           7 bits, since it was likely intended to be
+   --                           "mod 2**7". Similarly "mod 32" is considered
+   --                           suspicious, since it was likely intended to
+   --                           be "mod 2**32".
    --
    --   UNCHECKED_CONVERSIONS   Activates warnings on unchecked conversions.
-   --                           Causes warnings to be generated for
-   --                           unchecked conversions when the two types are
-   --                           known at compile time to have different sizes.
-   --                           The default is that such warnings are
-   --                           generated.
+   --   (-gnatwz)               Causes warnings to be generated for unchecked
+   --                           conversions between types that are known at
+   --                           compile time to have different sizes.
    --
-   --   NOUNCHECKED_CONVERSIONS Suppress warnings for unchecked conversions.
+   --   UNORDERED_ENUMERATION   Activate warnings for unordered enumeration.
+   --   (-gnatw.u)              Causes warnings to be generated if for an
+   --                           enumeration type that does not have a pragma
+   --                           Ordered that applies, if a subtype with a
+   --                           range is used, or a comparison other than
+   --                           [in]equality appears for values of the type.
    --
-   --   UNINITIALIZED           Generate warnings for uninitialized variables.
-   --                           This is a GCC option, not an Ada option.
-   --                           You must also specify the /OPTIMIZE qualifier
-   --                           with a value other than NONE (in other words,
-   --                           this keyword works only if optimization is
-   --                           turned on).
+   --   UNRECOGNIZED_PRAGMAS    Activate warnings for unrecognized pragmas.
+   --   (-gnatwg)               Such pragmas are ignored other than generating
+   --                           these warnings.
    --
    --   UNREFERENCED_FORMALS    Activate warnings on unreferenced formals.
-   --                           Causes a warning to be generated if a formal
+   --   (-gnatwf)               Causes a warning to be generated if a formal
    --                           parameter is not referenced in the body of
-   --                           the subprogram. This warning can also be turned
-   --                           on using option ALL or UNUSED.
-   --
-   --   NOUNREFERENCED_FORMALS  Suppress warnings on unreferenced formals.
-   --                           Suppresses warnings for unreferenced formal
-   --                           parameters. Note that the combination UNUSED
-   --                           followed by NOUNREFERENCED_FORMALS has the
-   --                           effect of warning on unreferenced entities
-   --                           other than subprogram formals.
+   --                           the subprogram. Note that the combination
+   --                           UNUSED followed by NOUNREFERENCED_FORMALS
+   --                           has the effect of warning on unreferenced
+   --                           entities other than subprogram formals.
    --
    --   UNUSED                  Activates warnings to be generated for entities
-   --                           that are defined but not referenced, and for
+   --   (-gantwu)               that are defined but not referenced, and for
    --                           units that are with'ed and not referenced. In
    --                           the case of packages, a warning is also
    --                           generated if no entities in the package are
    --                           referenced. This means that if the package
    --                           is referenced but the only references are in
-   --                           use clauses or renames declarations, a warning
-   --                           is still generated. A warning is also generated
-   --                           for a generic package that is with'ed but never
-   --                           instantiated.  In the case where a package or
-   --                           subprogram body is compiled, and there is a
-   --                           with on the corresponding spec that is only
-   --                           referenced in the body, a warning is also
-   --                           generated, noting that the with can be moved
-   --                           to the body. The default is that such warnings
-   --                           are not generated.
-   --
-   --   NOUNUSED                Suppress warnings for unused entities and
-   --                           packages.
+   --                           in use clauses or renames declarations, a
+   --                           warning is still generated. A warning is also
+   --                           generated for a generic package that is
+   --                           with'ed but never instantiated. In the case
+   --                           where a package or subprogram body is
+   --                           compiled, and there is a with on the
+   --                           corresponding spec that is only referenced
+   --                           in the body, a warning is also generated,
+   --                           noting the with can be moved to the body.
    --
    --   VARIABLES_UNINITIALIZED Activates warnings on unassigned variables.
-   --                           Causes warnings to be generated when a variable
-   --                           is accessed which may not be properly
-   --                           uninitialized. The default is that such
-   --                           warnings are generated.
-   --
-   --   NOVARIABLES_UNINITIALIZED
-   --                           Suppress warnings for uninitialized variables.
+   --   (-gnatwv)               Causes warnings to be generated when a
+   --                           variable is accessed which may not be
+   --                           properly initialized.
    --
-   --   TAG_WARNINGS            Causes the string [xxx] to be added to warnings
-   --                           that are controlled by the warning string xxx,
-   --                           e.g. [REDUNDANT], or if the warning is enabled
-   --                           by default, the tag is [enabled by default].
-   --
-   --   NOTAG_WARNINGS          Turns off warning tag output (default setting).
+   --   WARNINGS_OFF_PRAGMAS    Activates warnings for pragma Warnings (Off).
+   --   (-gnatw.w)              This generates a warning if the specific string
+   --                           version the pragma is used as a local pragma
+   --                           (i.e. not a configuration pragma) and no
+   --                           warning is suppressed as a result.
    --
    --   WHY_SPEC_NEEDS_BODY     Generates information messages showing why a
-   --                           package specification requires a body.
+   --   (-gnatw.y)              package specification requires a body.
    --
-   --   NO_WHY_SPEC_NEEDS_BODY  Turns off information messages showing why a
-   --                           package specification requires a body.
-
    S_GCC_WarnX   : aliased constant S := "/NOWARNINGS "                    &
                                             "-gnatws";
    --  NODOC (see /WARNINGS)