diff options
author | Robert Dewar <dewar@gnat.com> | 2001-12-05 01:06:25 +0000 |
---|---|---|
committer | Geert Bosch <bosch@gcc.gnu.org> | 2001-12-05 02:06:25 +0100 |
commit | 63db260effc0ce9622afe7c43fb8b4eabd5ad3f9 (patch) | |
tree | 2e1986a256c93952f2cdc37de5921659124ea2b8 | |
parent | c6d289f47ef7f721d019b63c820494bc564e1bab (diff) | |
download | gcc-63db260effc0ce9622afe7c43fb8b4eabd5ad3f9.zip gcc-63db260effc0ce9622afe7c43fb8b4eabd5ad3f9.tar.gz gcc-63db260effc0ce9622afe7c43fb8b4eabd5ad3f9.tar.bz2 |
exp_util.adb: Minor reformatting from last change
* exp_util.adb: Minor reformatting from last change
* errout.adb (Check_For_Warning): For a Raised_Constraint_Error node
which is a rewriting of an expression, traverse the original
expression to remove warnings that may have been posted on it.
From-SVN: r47639
-rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/errout.adb | 27 | ||||
-rw-r--r-- | gcc/ada/exp_util.adb | 10 |
3 files changed, 42 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0f72ac5..02bc72d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2001-12-04 Robert Dewar <dewar@gnat.com> + + * exp_util.adb: Minor reformatting from last change + + * errout.adb (Check_For_Warning): For a Raised_Constraint_Error node + which is a rewriting of an expression, traverse the original + expression to remove warnings that may have been posted on it. + 2001-12-04 Ed Schonberg <schonber@gnat.com> * exp_util.adb (Must_Be_Aligned): Return false for a component of a diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index ad64a5f..28b0c4c 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- $Revision: 1.208 $ +-- $Revision$ -- -- -- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- -- -- @@ -1981,7 +1981,30 @@ package body Errout is E := Errors.Table (E).Next; end loop; - return OK; + if Nkind (N) = N_Raise_Constraint_Error + and then Original_Node (N) /= N + then + + -- Warnings may have been posted on subexpressions of + -- the original tree. We temporarily replace the raise + -- statement with the original expression to remove + -- those warnings, whose sloc do not match those of + -- any node in the current tree. + + declare + Old : Node_Id := N; + Status : Traverse_Result; + + begin + Rewrite (N, Original_Node (N)); + Status := Check_For_Warning (N); + Rewrite (N, Old); + return Status; + end; + + else + return OK; + end if; end Check_For_Warning; -- Start of processing for Remove_Warning_Messages diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 4cdd988..a0a4d01 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -2503,9 +2503,14 @@ package body Exp_Util is -- choose to pack the rest of the record. Lead to less efficient code, -- but safer vis-a-vis of back-end choices. + ----------------------------- + -- Partially_Packed_Record -- + ----------------------------- + function In_Partially_Packed_Record (Comp : Entity_Id) return Boolean is - Rec_Type : constant Entity_Id := Scope (Comp); + Rec_Type : constant Entity_Id := Scope (Comp); Prev_Comp : Entity_Id; + begin Prev_Comp := First_Entity (Rec_Type); while Present (Prev_Comp) loop @@ -2521,6 +2526,9 @@ package body Exp_Util is return False; end In_Partially_Packed_Record; + + -- Start of processing for Must_Be_Aligned + begin -- If object is strictly aligned, we can quit now |