+2007-12-03 Robert Dewar <dewar@adacore.com>
+ Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/34287
+ * sem_util.adb (Safe_To_Capture_Value): Do not capture values
+ of variables declared in a library-level package.
+
2007-12-02 Samuel Tardieu <sam@rfc1149.net>
* clean.adb (Clean_Library_Directory): Use Empty_String'Access intead
-- Skip if volatile or aliased, since funny things might be going on in
-- these cases which we cannot necessarily track. Also skip any variable
- -- for which an address clause is given, or whose address is taken.
+ -- for which an address clause is given, or whose address is taken. Also
+ -- never capture value of library level variables (an attempt to do so
+ -- can occur in the case of package elaboration code).
if Treat_As_Volatile (Ent)
or else Is_Aliased (Ent)
or else Present (Address_Clause (Ent))
or else Address_Taken (Ent)
+ or else (Is_Library_Level_Entity (Ent)
+ and then Ekind (Ent) = E_Variable)
then
return False;
end if;
+2007-12-03 Robert Dewar <dewar@adacore.com>
+ Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/34287
+ * check_elaboration_code.adb: New test.
+
+ * bug_elaboration_code.ads, bug_elaboration_code.adb: New support
+ files.
+
2007-12-02 Paolo Carlini <pcarlini@suse.de>
PR c++/34061
--- /dev/null
+package body Bug_Elaboration_Code is
+
+ procedure Increment_I is
+ begin
+ I := I + 1;
+ end Increment_I;
+
+begin
+ I := 5;
+ Increment_I;
+ J := I;
+end Bug_Elaboration_Code;
--- /dev/null
+package Bug_Elaboration_Code is
+
+ pragma Elaborate_Body;
+
+ I : Integer;
+ J : Integer;
+
+end Bug_Elaboration_Code;
--- /dev/null
+-- { dg-do run }
+with Bug_Elaboration_Code; use Bug_Elaboration_Code;
+
+procedure Check_Elaboration_Code is
+begin
+ if I /= J then
+ raise Program_Error;
+ end if;
+end Check_Elaboration_Code;