From 1175f0b6e5ee84cd460248c9a19fae521135d0e3 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Fri, 19 Jun 2009 12:32:08 +0200 Subject: [PATCH] [multiple changes] 2009-06-19 Robert Dewar * g-cgi.adb: Minor reformatting 2009-06-19 Eric Botcazou * s-intman-solaris.adb (Notify_Exception): Do not discriminate on the signal code for SIGFPE and raise Program_Error for SIGILL. * s-osinte-solaris.ads: Remove signal code constants for SIGFPE. 2009-06-19 Ed Schonberg * sem_ch8.adb (Nvis_Messages): Do not list an entity declared in a generic package if there is a visibility candidate that is declared in a regular package. From-SVN: r148691 --- gcc/ada/ChangeLog | 17 +++++++++++++++++ gcc/ada/g-cgi.adb | 3 ++- gcc/ada/s-intman-solaris.adb | 33 ++++++++++----------------------- gcc/ada/s-osinte-solaris.ads | 11 +---------- gcc/ada/sem_ch8.adb | 16 ++++++++++++++++ 5 files changed, 46 insertions(+), 34 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0a469b26ddc..580763e367f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,20 @@ +2009-06-19 Robert Dewar + + * g-cgi.adb: Minor reformatting + +2009-06-19 Eric Botcazou + + * s-intman-solaris.adb (Notify_Exception): Do not discriminate on the + signal code for SIGFPE and raise Program_Error for SIGILL. + + * s-osinte-solaris.ads: Remove signal code constants for SIGFPE. + +2009-06-19 Ed Schonberg + + * sem_ch8.adb (Nvis_Messages): Do not list an entity declared in a + generic package if there is a visibility candidate that is declared in + a regular package. + 2009-06-18 Olivier Hainque * system-aix64.ads: New file. diff --git a/gcc/ada/g-cgi.adb b/gcc/ada/g-cgi.adb index b1b6789e4fb..dad37381129 100644 --- a/gcc/ada/g-cgi.adb +++ b/gcc/ada/g-cgi.adb @@ -123,8 +123,9 @@ package body GNAT.CGI is (Natural'Value ("16#" & S (K + 1 .. K + 2) & '#')); K := K + 3; + -- Plus sign is decoded as a space + elsif S (K) = '+' then - -- + sign is decoded as a space Result (J) := ' '; K := K + 1; diff --git a/gcc/ada/s-intman-solaris.adb b/gcc/ada/s-intman-solaris.adb index e8bd6ffe419..170cd82f8da 100644 --- a/gcc/ada/s-intman-solaris.adb +++ b/gcc/ada/s-intman-solaris.adb @@ -89,40 +89,27 @@ package body System.Interrupt_Management is info : access siginfo_t; context : access ucontext_t) is + pragma Unreferenced (info); + begin -- Perform the necessary context adjustments prior to a raise -- from a signal handler. Adjust_Context_For_Raise (signo, context.all'Address); - -- Check that treatment of exception propagation here - -- is consistent with treatment of the abort signal in - -- System.Task_Primitives.Operations. + -- Check that treatment of exception propagation here is consistent with + -- treatment of the abort signal in System.Task_Primitives.Operations. case signo is when SIGFPE => - case info.si_code is - when FPE_INTDIV | - FPE_INTOVF | - FPE_FLTDIV | - FPE_FLTOVF | - FPE_FLTUND | - FPE_FLTRES | - FPE_FLTINV | - FPE_FLTSUB => - - raise Constraint_Error; - - when others => - pragma Assert (False); - null; - end case; - - when SIGILL | SIGSEGV | SIGBUS => + raise Constraint_Error; + when SIGILL => + raise Program_Error; + when SIGSEGV => + raise Storage_Error; + when SIGBUS => raise Storage_Error; - when others => - pragma Assert (False); null; end case; end Notify_Exception; diff --git a/gcc/ada/s-osinte-solaris.ads b/gcc/ada/s-osinte-solaris.ads index 32213ccabd4..a937f6ea36a 100644 --- a/gcc/ada/s-osinte-solaris.ads +++ b/gcc/ada/s-osinte-solaris.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2009, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -168,15 +168,6 @@ package System.OS_Interface is -- More analysis is needed, after which these declarations may need to -- be changed. - FPE_INTDIV : constant := 1; -- integer divide by zero - FPE_INTOVF : constant := 2; -- integer overflow - FPE_FLTDIV : constant := 3; -- floating point divide by zero - FPE_FLTOVF : constant := 4; -- floating point overflow - FPE_FLTUND : constant := 5; -- floating point underflow - FPE_FLTRES : constant := 6; -- floating point inexact result - FPE_FLTINV : constant := 7; -- invalid floating point operation - FPE_FLTSUB : constant := 8; -- subscript out of range - type greg_t is new int; type gregset_t is array (0 .. 18) of greg_t; diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 8ddefb58af0..4063b12397e 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -3694,6 +3694,7 @@ package body Sem_Ch8 is procedure Nvis_Messages is Comp_Unit : Node_Id; Ent : Entity_Id; + Found : Boolean := False; Hidden : Boolean := False; Item : Node_Id; @@ -3781,10 +3782,25 @@ package body Sem_Ch8 is if Is_Hidden (Ent) then Error_Msg_N ("non-visible (private) declaration#!", N); + + -- If the entity is declared in a generic package, it + -- cannot be visible, so there is no point in adding it + -- to the list of candidates if another homograph from a + -- non-generic package has been seen. + + elsif Ekind (Scope (Ent)) = E_Generic_Package + and then Found + then + null; + else Error_Msg_N -- CODEFIX ("non-visible declaration#!", N); + if Ekind (Scope (Ent)) /= E_Generic_Package then + Found := True; + end if; + if Is_Compilation_Unit (Ent) and then Nkind (Parent (Parent (N))) = N_Use_Package_Clause