From 89c273b45787a36d90bdf91c0eb0f182a7fb960e Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Mon, 17 Aug 2009 11:28:48 +0200 Subject: [PATCH] [multiple changes] 2009-08-17 Ed Schonberg * sem_ch3.adb (Access_Definition): Do not create an Itype reference for an anonymous access type whose designated type is generic. 2009-08-17 Arnaud Charlet * comperr.adb (Compiler_Abort): Do not generate a bug box when in codepeer mode, friendlier. From-SVN: r150824 --- gcc/ada/ChangeLog | 10 ++++++++++ gcc/ada/comperr.adb | 16 ++++++++++++---- gcc/ada/sem_ch3.adb | 3 +++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f345b5d2379..10e15169911 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2009-08-17 Ed Schonberg + + * sem_ch3.adb (Access_Definition): Do not create an Itype reference for + an anonymous access type whose designated type is generic. + +2009-08-17 Arnaud Charlet + + * comperr.adb (Compiler_Abort): Do not generate a bug box when in + codepeer mode, friendlier. + 2009-08-10 Laurent GUERBY * make.adb: Handle multilib diff --git a/gcc/ada/comperr.adb b/gcc/ada/comperr.adb index 43680b1b4bb..da6c8a688ed 100644 --- a/gcc/ada/comperr.adb +++ b/gcc/ada/comperr.adb @@ -32,6 +32,7 @@ with Debug; use Debug; with Errout; use Errout; with Gnatvsn; use Gnatvsn; with Namet; use Namet; +with Opt; use Opt; with Osint; use Osint; with Output; use Output; with Sinput; use Sinput; @@ -121,19 +122,26 @@ package body Comperr is -- practical interface, since giving scary bug boxes on unsupported -- features is definitely not helpful. + -- Similarly if we are generating SCIL, an error message is sufficient + -- instead of generating a bug box. + -- Note that the call to Error_Msg_N below sets Serious_Errors_Detected -- to 1, so we use the regular mechanism below in order to display a -- "compilation abandoned" message and exit, so we still know we have -- this case (and -gnatdk can still be used to get the bug box). - if VM_Target = CLI_Target + if (VM_Target = CLI_Target or else CodePeer_Mode) and then Serious_Errors_Detected = 0 and then not Debug_Flag_K and then Sloc (Current_Error_Node) > No_Location then - Error_Msg_N - ("unsupported construct in this context", - Current_Error_Node); + if VM_Target = CLI_Target then + Error_Msg_N + ("unsupported construct in this context", + Current_Error_Node); + else + Error_Msg_N ("cannot generate 'S'C'I'L", Current_Error_Node); + end if; end if; -- If any errors have already occurred, then we guess that the abort diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index adea69db29e..8b24cd6d071 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -939,9 +939,12 @@ package body Sem_Ch3 is -- type declaration. In either case, do not create a reference for a -- type obtained through a limited_with clause, because this would -- introduce semantic dependencies. + -- Similarly, do not create a reference if the designated type is a + -- generic formal, because no use of it will reach the backend. elsif Nkind (Related_Nod) = N_Function_Specification and then not From_With_Type (Desig_Type) + and then not Is_Generic_Type (Desig_Type) then if Present (Enclosing_Prot_Type) then Build_Itype_Reference (Anon_Type, Parent (Enclosing_Prot_Type)); -- 2.30.2