The generation of references for SPARK formal verification was missing some
write references through renamings. This is now fixed.

Tested on x86_64-pc-linux-gnu, committed on trunk

2013-10-17  Yannick Moy  <m...@adacore.com>

        * sem_ch8.adb (Find_Direct_Name): Keep track of assignments for
        renamings in SPARK mode.

Index: sem_ch8.adb
===================================================================
--- sem_ch8.adb (revision 203568)
+++ sem_ch8.adb (working copy)
@@ -5073,9 +5073,14 @@
             --  Entity is unambiguous, indicate that it is referenced here
 
             --  For a renaming of an object, always generate simple reference,
-            --  we don't try to keep track of assignments in this case.
+            --  we don't try to keep track of assignments in this case, except
+            --  in SPARK mode where renamings are traversed for generating
+            --  local effects of subprograms.
 
-            if Is_Object (E) and then Present (Renamed_Object (E)) then
+            if Is_Object (E)
+              and then Present (Renamed_Object (E))
+              and then not SPARK_Mode
+            then
                Generate_Reference (E, N);
 
                --  If the renamed entity is a private protected component,

Reply via email to