diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-23 08:39:36 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-23 08:39:36 +0200 |
commit | cd5a975094d0ef72cacd28e5334b6f83b6c1eadd (patch) | |
tree | c4111d0cf04a3fbaafe28dc59388d2a63c26f0ad /gcc/ada/exp_ch13.adb | |
parent | 3aee21ef61bb90e6806563e326837316023185e8 (diff) | |
download | gcc-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.adb | 21 |
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; |