Constants cannot be modified, and so should never appear in the ALFA section
of ALI files as effects. This patch enforces this property.
Tested on x86_64-pc-linux-gnu, committed on trunk
2011-09-05 Johannes Kanig <[email protected]>
* lib-xref-alfa.adb (Is_Alfa_Reference): Filter constants from effect
information.
Index: lib-xref-alfa.adb
===================================================================
--- lib-xref-alfa.adb (revision 178531)
+++ lib-xref-alfa.adb (working copy)
@@ -616,7 +616,9 @@
-- section, as these will be translated as constants in the
-- intermediate language for formal verification.
- when E_In_Parameter =>
+ -- Above comment is incomplete??? what about E_Constant case
+
+ when E_In_Parameter | E_Constant =>
return False;
when others =>
@@ -624,18 +626,13 @@
-- Objects of Task type or protected type are not Alfa
-- references.
- if Present (Etype (E)) then
- case Ekind (Etype (E)) is
- when E_Task_Type | E_Protected_Type =>
- return False;
-
- when others =>
- null;
- end case;
+ if Present (Etype (E))
+ and then Ekind (Etype (E)) in Concurrent_Kind
+ then
+ return False;
end if;
return Typ = 'r' or else Typ = 'm';
-
end case;
end Is_Alfa_Reference;