aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch13.adb
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 /gcc/ada/exp_ch13.adb
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
Diffstat (limited to 'gcc/ada/exp_ch13.adb')
-rw-r--r--gcc/ada/exp_ch13.adb21
1 files changed, 20 insertions, 1 deletions
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;