diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-31 10:23:25 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-31 10:23:25 +0000 |
commit | 78976972ae3ef0881f018102a8104db0e3e2ac67 (patch) | |
tree | 53d9fad7764e46233036b104c5363cc023e5b437 /gcc/ada | |
parent | c133ba938e437900a7f6e813bbed3bbfd022270b (diff) | |
download | ppe42-gcc-78976972ae3ef0881f018102a8104db0e3e2ac67.tar.gz ppe42-gcc-78976972ae3ef0881f018102a8104db0e3e2ac67.zip |
2007-08-31 Hristian Kirtchev <kirtchev@adacore.com>
* restrict.adb, namet.adb, par-util.adb: Remove redundant type
conversion.
* sem_res.adb (Resolve_Qualified_Expression): Add machinery to detect
simple redundant qualifications. The check is performed whenever the
expression is a non-overloaded identifier.
(Resolve_Type_Conversion): Enchance the redundant type conversion check
to include loop parameters.
(Valid_Conversion): Avoid generation of spurious error message.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127976 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/namet.adb | 4 | ||||
-rw-r--r-- | gcc/ada/par-util.adb | 2 | ||||
-rw-r--r-- | gcc/ada/restrict.adb | 4 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 20 |
4 files changed, 20 insertions, 10 deletions
diff --git a/gcc/ada/namet.adb b/gcc/ada/namet.adb index 0f4074c49be..6d5d1580f30 100644 --- a/gcc/ada/namet.adb +++ b/gcc/ada/namet.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2006, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2007, 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- -- @@ -149,7 +149,7 @@ package body Namet is else Write_Str ("Hash_Table ("); - Write_Int (Int (J)); + Write_Int (J); Write_Str (") has "); declare diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb index 2971f563386..f5a44e68edd 100644 --- a/gcc/ada/par-util.adb +++ b/gcc/ada/par-util.adb @@ -61,7 +61,7 @@ package body Util is end if; for J in S'Range loop - S (J) := Fold_Lower (Tname (Integer (J) + 4)); + S (J) := Fold_Lower (Tname (J + 4)); end loop; Get_Name_String (Token_Name); diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index 03905ec690b..8b333b61926 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -99,7 +99,7 @@ package body Restrict is and then not Suppress_Restriction_Message (N) then Namet.Unlock; - Check_Restriction (Restriction_Id'(No_Elaboration_Code), N); + Check_Restriction (No_Elaboration_Code, N); Namet.Lock; end if; end Check_Elaboration_Code_Allowed; @@ -110,7 +110,7 @@ package body Restrict is procedure Check_No_Implicit_Heap_Alloc (N : Node_Id) is begin - Check_Restriction (Restriction_Id'(No_Implicit_Heap_Allocations), N); + Check_Restriction (No_Implicit_Heap_Allocations, N); end Check_No_Implicit_Heap_Alloc; --------------------------- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index c1387f21062..4aa1e45857d 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -7582,10 +7582,15 @@ package body Sem_Res is end if; if Is_Entity_Name (Orig_N) - and then Etype (Entity (Orig_N)) = Orig_T + and then + (Etype (Entity (Orig_N)) = Orig_T + or else + (Ekind (Entity (Orig_N)) = E_Loop_Parameter + and then Covers (Orig_T, Etype (Entity (Orig_N))))) then + Error_Msg_Node_2 := Orig_T; Error_Msg_NE - ("?useless conversion, & has this type!", N, Entity (Orig_N)); + ("?redundant conversion, & is of type &!", N, Entity (Orig_N)); end if; end if; @@ -8803,9 +8808,14 @@ package body Sem_Res is ("\?Program_Error will be raised at run time", Operand); else - Error_Msg_N - ("cannot convert local pointer to non-local access type", - Operand); + -- Avoid generation of spurious error message + + if not Error_Posted (N) then + Error_Msg_N + ("cannot convert local pointer to non-local access type", + Operand); + end if; + return False; end if; |