summaryrefslogtreecommitdiffstats
path: root/gcc/ada
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-31 10:23:25 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-08-31 10:23:25 +0000
commit78976972ae3ef0881f018102a8104db0e3e2ac67 (patch)
tree53d9fad7764e46233036b104c5363cc023e5b437 /gcc/ada
parentc133ba938e437900a7f6e813bbed3bbfd022270b (diff)
downloadppe42-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.adb4
-rw-r--r--gcc/ada/par-util.adb2
-rw-r--r--gcc/ada/restrict.adb4
-rw-r--r--gcc/ada/sem_res.adb20
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;
OpenPOWER on IntegriCloud