aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-06-23 08:39:36 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-06-23 08:39:36 +0200
commitcd5a975094d0ef72cacd28e5334b6f83b6c1eadd (patch)
treec4111d0cf04a3fbaafe28dc59388d2a63c26f0ad
parent3aee21ef61bb90e6806563e326837316023185e8 (diff)
downloadgcc-cd5a975094d0ef72cacd28e5334b6f83b6c1eadd.zip
gcc-cd5a975094d0ef72cacd28e5334b6f83b6c1eadd.tar.gz
gcc-cd5a975094d0ef72cacd28e5334b6f83b6c1eadd.tar.bz2
[multiple changes]
2010-06-23 Robert Dewar <dewar@adacore.com> * freeze.adb: Minor reformatting. 2010-06-23 Bob Duff <duff@adacore.com> * g-pehage.adb (Trim_Trailing_Nuls): Fix the code to match the comment. 2010-06-23 Vincent Celier <celier@adacore.com> * make.adb (Compile_Sources): Complete previous change. 2010-06-23 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Add_Extra_Formal): Use suffix "C" in the name of the Constrained extra formal. 2010-06-23 Ed Schonberg <schonberg@adacore.com> * exp_ch13.adb (Expand_Freeze_Actions): If validity checks and Initialize_Scalars are enabled, compile the generated equality function for a composite type with full checks enabled, so that validity checks are performed on individual components. From-SVN: r161250
-rw-r--r--gcc/ada/ChangeLog24
-rw-r--r--gcc/ada/exp_ch13.adb21
-rw-r--r--gcc/ada/freeze.adb4
-rw-r--r--gcc/ada/g-pehage.adb6
-rw-r--r--gcc/ada/make.adb2
-rw-r--r--gcc/ada/sem_ch6.adb23
6 files changed, 71 insertions, 9 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 79848dd..638e4e6 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,27 @@
+2010-06-23 Robert Dewar <dewar@adacore.com>
+
+ * freeze.adb: Minor reformatting.
+
+2010-06-23 Bob Duff <duff@adacore.com>
+
+ * g-pehage.adb (Trim_Trailing_Nuls): Fix the code to match the comment.
+
+2010-06-23 Vincent Celier <celier@adacore.com>
+
+ * make.adb (Compile_Sources): Complete previous change.
+
+2010-06-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Add_Extra_Formal): Use suffix "C" in the name of the
+ Constrained extra formal.
+
+2010-06-23 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch13.adb (Expand_Freeze_Actions): If validity checks and
+ Initialize_Scalars are enabled, compile the generated equality function
+ for a composite type with full checks enabled, so that validity checks
+ are performed on individual components.
+
2010-06-23 Emmanuel Briot <briot@adacore.com>
* prj.adb, prj.ads, prj-nmsc.adb (Processing_Flags): New flag
diff --git a/gcc/ada/exp_ch13.adb b/gcc/ada/exp_ch13.adb
index 3b682cf..6633ffb 100644
--- a/gcc/ada/exp_ch13.adb
+++ b/gcc/ada/exp_ch13.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -46,6 +46,7 @@ with Snames; use Snames;
with Stand; use Stand;
with Tbuild; use Tbuild;
with Uintp; use Uintp;
+with Validsw; use Validsw;
package body Exp_Ch13 is
@@ -346,6 +347,24 @@ package body Exp_Ch13 is
Analyze (Decl, Suppress => All_Checks);
Pop_Scope;
+ -- We treat generated equality specially, if validity checks are
+ -- enabled, in order to detect components default-initialized
+ -- with invalid values.
+
+ elsif Nkind (Decl) = N_Subprogram_Body
+ and then Chars (Defining_Entity (Decl)) = Name_Op_Eq
+ and then Validity_Checks_On
+ and then Initialize_Scalars
+ then
+ declare
+ Save_Force : constant Boolean := Force_Validity_Checks;
+
+ begin
+ Force_Validity_Checks := True;
+ Analyze (Decl);
+ Force_Validity_Checks := Save_Force;
+ end;
+
else
Analyze (Decl, Suppress => All_Checks);
end if;
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 079534f..e32114a 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -4440,8 +4440,8 @@ package body Freeze is
Scope_Stack.Table (Pos).Pending_Freeze_Actions :=
Freeze_Nodes;
else
- Append_List (Freeze_Nodes, Scope_Stack.Table
- (Pos).Pending_Freeze_Actions);
+ Append_List (Freeze_Nodes,
+ Scope_Stack.Table (Pos).Pending_Freeze_Actions);
end if;
end if;
end;
diff --git a/gcc/ada/g-pehage.adb b/gcc/ada/g-pehage.adb
index f64ee4cf..46b6d7c 100644
--- a/gcc/ada/g-pehage.adb
+++ b/gcc/ada/g-pehage.adb
@@ -2514,9 +2514,9 @@ package body GNAT.Perfect_Hash_Generators is
function Trim_Trailing_Nuls (Str : String) return String is
begin
- for J in Str'Range loop
- if Str (J) = ASCII.NUL then
- return Str (Str'First .. J - 1);
+ for J in reverse Str'Range loop
+ if Str (J) /= ASCII.NUL then
+ return Str (Str'First .. J);
end if;
end loop;
return Str;
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index fe157b0..d1cafbf 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -2449,7 +2449,7 @@ package body Make is
Need_To_Check_Standard_Library : Boolean :=
(Check_Readonly_Files or Must_Compile)
- and Unique_Compile;
+ and not Unique_Compile;
procedure Add_Process
(Pid : Process_Id;
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 7121b67..04242c3 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -774,6 +774,11 @@ package body Sem_Ch6 is
& "null-excluding return?",
Reason => CE_Null_Not_Allowed);
end if;
+
+ -- Apply checks suggested by AI05-0144 (dangerous order dependence)
+ -- (Disabled for now)
+
+ -- Check_Order_Dependence;
end if;
end Analyze_Function_Return;
@@ -1039,6 +1044,7 @@ package body Sem_Ch6 is
procedure Analyze_Call_And_Resolve;
-- Do Analyze and Resolve calls for procedure call
+ -- At end, check illegal order dependence.
------------------------------
-- Analyze_Call_And_Resolve --
@@ -1049,6 +1055,11 @@ package body Sem_Ch6 is
if Nkind (N) = N_Procedure_Call_Statement then
Analyze_Call (N);
Resolve (N, Standard_Void_Type);
+
+ -- Apply checks suggested by AI05-0144 (Disabled for now)
+
+ -- Check_Order_Dependence;
+
else
Analyze (N);
end if;
@@ -5420,6 +5431,14 @@ package body Sem_Ch6 is
-- and also returned as the result. These formals are always of mode IN.
-- The new formal has the type Typ, is declared in Scope, and its name
-- is given by a concatenation of the name of Assoc_Entity and Suffix.
+ -- The following suffixes are currently used. They should not be changed
+ -- without coordinating with CodePeer, which makes use of these to
+ -- provide better messages.
+
+ -- C denotes the Constrained bit.
+ -- A denotes the accessibility level.
+ -- BIP_xxx denotes an extra formal for a build-in-place function. See
+ -- the full list in exp_ch6.BIP_Formal_Kind.
----------------------
-- Add_Extra_Formal --
@@ -5546,7 +5565,7 @@ package body Sem_Ch6 is
and then not Is_Indefinite_Subtype (Formal_Type)
then
Set_Extra_Constrained
- (Formal, Add_Extra_Formal (Formal, Standard_Boolean, E, "F"));
+ (Formal, Add_Extra_Formal (Formal, Standard_Boolean, E, "C"));
end if;
end if;
@@ -5579,7 +5598,7 @@ package body Sem_Ch6 is
or else Present (Extra_Accessibility (P_Formal)))
then
Set_Extra_Accessibility
- (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "F"));
+ (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "A"));
end if;
-- This label is required when skipping extra formal generation for