From 403fd9399629105bedd66ba49fad9c7dd6df4d29 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Mon, 3 Dec 2007 16:01:57 +0000 Subject: re PR ada/34287 (Simple Ada bug [Barnes' Silly]) 2007-12-03 Robert Dewar Samuel Tardieu gcc/ada/ PR ada/34287 * sem_util.adb (Safe_To_Capture_Value): Do not capture values of variables declared in a library-level package. gcc/testsuite/gnat.dg/ PR ada/34287 * check_elaboration_code.adb: New test. * bug_elaboration_code.ads, bug_elaboration_code.adb: New support files. Co-Authored-By: Samuel Tardieu From-SVN: r130582 --- gcc/ada/ChangeLog | 7 +++++++ gcc/ada/sem_util.adb | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'gcc/ada') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 4d1fa5b2..54f3d5c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2007-12-03 Robert Dewar + Samuel Tardieu + + 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 * clean.adb (Clean_Library_Directory): Use Empty_String'Access intead diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index a6c35d3..600a7bf 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -8583,12 +8583,16 @@ package body Sem_Util is -- 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; -- cgit v1.1