]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Ada] Spurious warning on useless assignment with target name
authorEd Schonberg <schonberg@adacore.com>
Tue, 12 Jan 2021 15:46:26 +0000 (10:46 -0500)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 5 May 2021 08:19:03 +0000 (04:19 -0400)
gcc/ada/

* sem_ch5.adb (Analyze_Assignment): Do not emit the warning that
a previous value of the target object is useless if the
right-hand side of the assignment includes target names.

gcc/ada/sem_ch5.adb

index f03467f5e2dbb4ba8874c3c8bffdbc0aab053ccf..0aef9321d606e1859a54a5d84156e9e1db98cd9f 100644 (file)
@@ -1108,6 +1108,12 @@ package body Sem_Ch5 is
                --  warnings when an assignment is rewritten as another
                --  assignment, and gets tied up with itself.
 
+               --  We also omit the warning if the RHS includes target names,
+               --  that is to say the Ada2020 "@" that denotes an instance of
+               --  the LHS, which indicates that the current value is being
+               --  used. Note that this implicit reference to the entity on
+               --  the RHS is not treated as a source reference.
+
                --  There may have been a previous reference to a component of
                --  the variable, which in general removes the Last_Assignment
                --  field of the variable to indicate a relevant use of the
@@ -1126,6 +1132,7 @@ package body Sem_Ch5 is
                  and then Comes_From_Source (N)
                  and then In_Extended_Main_Source_Unit (Ent)
                  and then not Has_Deferred_Reference (Ent)
+                 and then not Has_Target_Names (N)
                then
                   Warn_On_Useless_Assignment (Ent, N);
                end if;