summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-24 09:08:00 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-24 09:08:00 +0000
commit09001c4f0b2d79bba0028262f4691bbcb3ac5403 (patch)
treed011bc4eeb28e350200fd1ba02a9af8507ecb5f0 /gcc/ada
parentf3a8f217b72a70ee85544e924686d0b7bf8c5a53 (diff)
downloadgcc-09001c4f0b2d79bba0028262f4691bbcb3ac5403.tar.gz
2009-06-24 Eric Botcazou <ebotcazou@adacore.com>
* ttypes.ads: Minor editing. 2009-06-24 Robert Dewar <dewar@adacore.com> * exp_ch6.adb (Expand_Actuals): Use Is_Volatile, not Treat_As_Volatile in deciding to do call-by-copy code. 2009-06-24 Vincent Celier <celier@adacore.com> * make.adb (Gnatmake): To decide if an executable should be rebuilt, check if an externally built library file is more current than the executable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148897 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog15
-rw-r--r--gcc/ada/exp_ch6.adb13
-rw-r--r--gcc/ada/make.adb30
-rw-r--r--gcc/ada/ttypes.ads2
4 files changed, 55 insertions, 5 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 60bcdaeb10b..4f9fb6de066 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,18 @@
+2009-06-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ttypes.ads: Minor editing.
+
+2009-06-24 Robert Dewar <dewar@adacore.com>
+
+ * exp_ch6.adb (Expand_Actuals): Use Is_Volatile, not Treat_As_Volatile
+ in deciding to do call-by-copy code.
+
+2009-06-24 Vincent Celier <celier@adacore.com>
+
+ * make.adb (Gnatmake): To decide if an executable should be rebuilt,
+ check if an externally built library file is more current than the
+ executable.
+
2009-06-23 Olivier Hainque <hainque@adacore.com>
* gcc-interface/utils.c (handle_vector_size_attribute): Import from
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 1da82bafd03..c3947305b31 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -1572,11 +1572,16 @@ package body Exp_Ch6 is
-- treatment, whereas the formal is not volatile, then pass
-- by copy unless it is a by-reference type.
+ -- Note: we use Is_Volatile here rather than Treat_As_Volatile,
+ -- because this is the enforcement of a language rule that applies
+ -- only to "real" volatile variables, not e.g. to the address
+ -- clause overlay case.
+
elsif Is_Entity_Name (Actual)
- and then Treat_As_Volatile (Entity (Actual))
+ and then Is_Volatile (Entity (Actual))
and then not Is_By_Reference_Type (Etype (Actual))
and then not Is_Scalar_Type (Etype (Entity (Actual)))
- and then not Treat_As_Volatile (E_Formal)
+ and then not Is_Volatile (E_Formal)
then
Add_Call_By_Copy_Code;
@@ -1604,8 +1609,8 @@ package body Exp_Ch6 is
Reset_Packed_Prefix;
Expand_Packed_Element_Reference (Actual);
- -- If we have a reference to a bit packed array, we copy it,
- -- since the actual must be byte aligned.
+ -- If we have a reference to a bit packed array, we copy it, since
+ -- the actual must be byte aligned.
-- Is this really necessary in all cases???
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index 955e6185cad..27489cdf99f 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -5881,6 +5881,36 @@ package body Make is
Executable_Obsolete := Youngest_Obj_File /= No_File;
end if;
+ -- Check if any library file is more recent than the
+ -- executable: there may be an externally built library
+ -- file that has been modified.
+
+ if (not Executable_Obsolete)
+ and then Main_Project /= No_Project
+ then
+ declare
+ Proj1 : Project_List;
+ begin
+ Proj1 := Project_Tree.Projects;
+ while Proj1 /= null loop
+ if Proj1.Project.Library and then
+ Proj1.Project.Library_TS > Executable_Stamp
+ then
+ Executable_Obsolete := True;
+ Youngest_Obj_Stamp := Proj1.Project.Library_TS;
+ Name_Len := 0;
+ Add_Str_To_Name_Buffer ("library ");
+ Add_Str_To_Name_Buffer
+ (Get_Name_String (Proj1.Project.Library_Name));
+ Youngest_Obj_File := Name_Find;
+ exit;
+ end if;
+
+ Proj1 := Proj1.Next;
+ end loop;
+ end;
+ end if;
+
-- Return if the executable is up to date and otherwise
-- motivate the relink/rebind.
diff --git a/gcc/ada/ttypes.ads b/gcc/ada/ttypes.ads
index 01b86e336a6..8b7749a50a1 100644
--- a/gcc/ada/ttypes.ads
+++ b/gcc/ada/ttypes.ads
@@ -206,7 +206,7 @@ package Ttypes is
-- True if instructions will fail if data is misaligned
Target_Double_Float_Alignment : Nat := Get_Double_Float_Alignment;
- -- The default alignment of "double" floating-point types, i.e. floating-
+ -- The default alignment of "double" floating-point types, i.e. floating
-- point types whose size is equal to 64 bits, or 0 if this alignment is
-- not specifically capped.