mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-18 11:20:51 +08:00
[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
This commit is contained in:
parent
3aee21ef61
commit
cd5a975094
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user