diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-13 12:54:42 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-10-13 12:54:42 +0000 |
commit | d21a50e526dd61bbf478f81e4a8cebcfdf05eb2f (patch) | |
tree | fa92f8d930db55b708a519f95013bf6c71ed1f8c | |
parent | 8cd5b37e243c6e27abda55fe172a0045cf7a1ebd (diff) | |
download | gcc-d21a50e526dd61bbf478f81e4a8cebcfdf05eb2f.tar.gz |
2016-10-13 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch10.adb (Entity_Needs_Body): A generic
subprogram renaming needs a body if the renamed unit is declared
outside the current compilation unit.
2016-10-13 Hristian Kirtchev <kirtchev@adacore.com>
* sinfo.ads, sem_ch12.adb, sem.adb, expander.adb, sem_res.ads,
sem_ch4.adb, sem_ch8.adb, s-memory.adb: Minor reformatting.
2016-10-13 Vincent Celier <celier@adacore.com>
* gnatcmd.adb: Delete all temporary files when invoked as gnat
list -V -P ...
2016-10-13 Ed Falis <falis@adacore.com>
* impunit.adb: add i-vxinco.ads.
* s-interr-vxworks.adb: add hook for user interrupt connection routine.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241112 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 21 | ||||
-rw-r--r-- | gcc/ada/expander.adb | 3 | ||||
-rw-r--r-- | gcc/ada/gnatcmd.adb | 6 | ||||
-rw-r--r-- | gcc/ada/impunit.adb | 3 | ||||
-rw-r--r-- | gcc/ada/s-interr-vxworks.adb | 21 | ||||
-rw-r--r-- | gcc/ada/s-memory.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem.adb | 4 | ||||
-rw-r--r-- | gcc/ada/sem_ch10.adb | 20 | ||||
-rw-r--r-- | gcc/ada/sem_ch12.adb | 7 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 19 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 6 | ||||
-rw-r--r-- | gcc/ada/sem_res.ads | 94 | ||||
-rw-r--r-- | gcc/ada/sinfo.ads | 4 |
13 files changed, 131 insertions, 79 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7dfa42d4f24..2b70994eb38 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,24 @@ +2016-10-13 Hristian Kirtchev <kirtchev@adacore.com> + + * sem_ch10.adb (Entity_Needs_Body): A generic + subprogram renaming needs a body if the renamed unit is declared + outside the current compilation unit. + +2016-10-13 Hristian Kirtchev <kirtchev@adacore.com> + + * sinfo.ads, sem_ch12.adb, sem.adb, expander.adb, sem_res.ads, + sem_ch4.adb, sem_ch8.adb, s-memory.adb: Minor reformatting. + +2016-10-13 Vincent Celier <celier@adacore.com> + + * gnatcmd.adb: Delete all temporary files when invoked as gnat + list -V -P ... + +2016-10-13 Ed Falis <falis@adacore.com> + + * impunit.adb: add i-vxinco.ads. + * s-interr-vxworks.adb: add hook for user interrupt connection routine. + 2016-10-13 Ed Falis <falis@adacore.com> * s-interr-hwint.adb, s-interr-vxworks.adb: Rename s-interr-hwint.adb diff --git a/gcc/ada/expander.adb b/gcc/ada/expander.adb index 4aa20d6f41b..84d64226772 100644 --- a/gcc/ada/expander.adb +++ b/gcc/ada/expander.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2015, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2016, 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- -- @@ -151,7 +151,6 @@ package body Expander is -- corresponding expand routines. case Nkind (N) is - when N_Abort_Statement => Expand_N_Abort_Statement (N); diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb index ce880ca4cc6..9a04e78abec 100644 --- a/gcc/ada/gnatcmd.adb +++ b/gcc/ada/gnatcmd.adb @@ -356,6 +356,7 @@ procedure GNATCmd is if Add_Sources then Tempdir.Create_Temp_File (FD, Temp_File_Name); + Record_Temp_File (Project_Tree.Shared, Temp_File_Name); Last_Switches.Increment_Last; Last_Switches.Table (Last_Switches.Last) := new String'("-files=" & Get_Name_String (Temp_File_Name)); @@ -1214,6 +1215,11 @@ begin end if; My_Exit_Status := Exit_Status (Spawn (Exec_Path.all, The_Args)); + + if not Keep_Temporary_Files then + Delete_All_Temp_Files (Project_Tree.Shared); + end if; + Set_Exit_Status (My_Exit_Status); end; end; diff --git a/gcc/ada/impunit.adb b/gcc/ada/impunit.adb index 45b937944b3..e1cce657420 100644 --- a/gcc/ada/impunit.adb +++ b/gcc/ada/impunit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2015, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2016, 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- -- @@ -351,6 +351,7 @@ package body Impunit is ("i-java ", F), -- Interfaces.Java ("i-javjni", F), -- Interfaces.Java.JNI ("i-pacdec", F), -- Interfaces.Packed_Decimal + ("i-vxinco", F), -- Interfaces.VxWorks.Int_Connection ("i-vxwoio", F), -- Interfaces.VxWorks.IO ("i-vxwork", F), -- Interfaces.VxWorks diff --git a/gcc/ada/s-interr-vxworks.adb b/gcc/ada/s-interr-vxworks.adb index b8705969d0c..32fba6008af 100644 --- a/gcc/ada/s-interr-vxworks.adb +++ b/gcc/ada/s-interr-vxworks.adb @@ -196,6 +196,22 @@ package body System.Interrupts is -- be connected but disconnection is not possible on VxWorks. Therefore -- we ensure Notify_Installed is connected at most once. + type Interrupt_Connector is access function + (Vector : Interrupt_Vector; + Handler : Interrupt_Handler; + Parameter : System.Address := System.Null_Address) return int; + -- Profile must match VxWorks intConnect() + + Interrupt_Connect : Interrupt_Connector := + System.OS_Interface.Interrupt_Connect'Access; + pragma Export (C, Interrupt_Connect, "__gnat_user_int_connect"); + -- Allow user alternatives to the OS implementation of + -- System.OS_Interface.Interrupt_Connect. This allows the user to + -- associate a handler with an interrupt source when an alternate routine + -- is needed to do so. The association is performed in + -- Interfaces.VxWorks.Interrupt_Connections. Defaults to the standard OS + -- connection routine. + ----------------------- -- Local Subprograms -- ----------------------- @@ -505,11 +521,12 @@ package body System.Interrupts is -- Only install umbrella handler when no Ada handler has already been -- installed. Note that the interrupt number is passed as a parameter -- when an interrupt occurs, so the umbrella handler has a different - -- wrapper generated by intConnect for each interrupt number. + -- wrapper generated by the connector routine for each interrupt + -- number. if not Handler_Installed (Interrupt) then Status := - Interrupt_Connect (Vec, Handler, System.Address (Interrupt)); + Interrupt_Connect.all (Vec, Handler, System.Address (Interrupt)); pragma Assert (Status = 0); Handler_Installed (Interrupt) := True; diff --git a/gcc/ada/s-memory.adb b/gcc/ada/s-memory.adb index 4c437669042..f419b4716ee 100644 --- a/gcc/ada/s-memory.adb +++ b/gcc/ada/s-memory.adb @@ -52,7 +52,7 @@ package body System.Memory is use System.Soft_Links; function c_malloc (Size : System.CRTL.size_t) return System.Address - renames System.CRTL.malloc; + renames System.CRTL.malloc; procedure c_free (Ptr : System.Address) renames System.CRTL.free; diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb index f904a506c01..a9700f64b43 100644 --- a/gcc/ada/sem.adb +++ b/gcc/ada/sem.adb @@ -1341,7 +1341,7 @@ package body Sem is -- unconditionally, and has no restore mechanism, because it is -- intended as a lowest-level Pure package. - Save_Max_Line : constant Int := Style_Max_Line_Length; + Save_Max_Line : constant Int := Style_Max_Line_Length; List : Elist_Id; @@ -1367,7 +1367,7 @@ package body Sem is -- Check for scope mismatch on exit from compilation pragma Assert (Current_Scope = Standard_Standard - or else Comp_Unit = Cunit (Main_Unit)); + or else Comp_Unit = Cunit (Main_Unit)); -- Then pop entry for Standard, and pop implicit types diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb index 115b2dd1e77..bc842e449cb 100644 --- a/gcc/ada/sem_ch10.adb +++ b/gcc/ada/sem_ch10.adb @@ -6145,15 +6145,14 @@ package body Sem_Ch10 is ------------------------------- procedure Check_Body_Needed_For_SAL (Unit_Name : Entity_Id) is - function Entity_Needs_Body (E : Entity_Id) return Boolean; -- Determine whether use of entity E might require the presence of its -- body. For a package this requires a recursive traversal of all nested -- declarations. - --------------------------- - -- Entity_Needed_For_SAL -- - --------------------------- + ----------------------- + -- Entity_Needs_Body -- + ----------------------- function Entity_Needs_Body (E : Entity_Id) return Boolean is Ent : Entity_Id; @@ -6163,7 +6162,18 @@ package body Sem_Ch10 is return True; elsif Ekind_In (E, E_Generic_Function, E_Generic_Procedure) then - return True; + + -- A generic subprogram always requires the presence of its + -- body because an instantiation needs both templates. The only + -- exceptions is a generic subprogram renaming. In this case the + -- body is needed only when the template is declared outside the + -- compilation unit being checked. + + if Present (Renamed_Entity (E)) then + return not Within_Scope (E, Unit_Name); + else + return True; + end if; elsif Ekind (E) = E_Generic_Package and then diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index b0a9ff66cac..3d940a63e8e 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -14259,7 +14259,6 @@ package body Sem_Ch12 is then Copy_Dimensions (N2, N); end if; - end Set_Global_Type; ------------------ @@ -14335,7 +14334,7 @@ package body Sem_Ch12 is if Is_Global (Entity (Original_Node (N2))) then N2 := Original_Node (N2); Set_Associated_Node (N, N2); - Set_Global_Type (N, N2); + Set_Global_Type (N, N2); -- Renaming is local, and will be resolved in instance @@ -14377,7 +14376,7 @@ package body Sem_Ch12 is if Is_Global (Entity (Parent (N2))) then Change_Selected_Component_To_Expanded_Name (Parent (N)); Set_Associated_Node (Parent (N), Parent (N2)); - Set_Global_Type (Parent (N), Parent (N2)); + Set_Global_Type (Parent (N), Parent (N2)); Save_Entity_Descendants (N); -- If this is a reference to the current generic entity, replace @@ -14436,7 +14435,7 @@ package body Sem_Ch12 is if Is_Global (Entity (Name (Parent (N2)))) then Change_Selected_Component_To_Expanded_Name (Parent (N)); Set_Associated_Node (Parent (N), Name (Parent (N2))); - Set_Global_Type (Parent (N), Name (Parent (N2))); + Set_Global_Type (Parent (N), Name (Parent (N2))); Save_Entity_Descendants (N); else diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 888d6e9edd5..9060fb1b723 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -231,18 +231,17 @@ package body Sem_Ch4 is R : Node_Id; Op_Id : Entity_Id; T1 : Entity_Id); - -- For equality and comparison operators, the result is always boolean, - -- and the legality of the operation is determined from the visibility - -- of the operand types. If one of the operands has a universal interpre- - -- tation, the legality check uses some compatible non-universal - -- interpretation of the other operand. N can be an operator node, or - -- a function call whose name is an operator designator. Any_Access, which - -- is the initial type of the literal NULL, is a universal type for the - -- purpose of this routine. + -- For equality and comparison operators, the result is always boolean, and + -- the legality of the operation is determined from the visibility of the + -- operand types. If one of the operands has a universal interpretation, + -- the legality check uses some compatible non-universal interpretation of + -- the other operand. N can be an operator node, or a function call whose + -- name is an operator designator. Any_Access, which is the initial type of + -- the literal NULL, is a universal type for the purpose of this routine. function Find_Primitive_Operation (N : Node_Id) return Boolean; - -- Find candidate interpretations for the name Obj.Proc when it appears - -- in a subprogram renaming declaration. + -- Find candidate interpretations for the name Obj.Proc when it appears in + -- a subprogram renaming declaration. procedure Find_Unary_Types (R : Node_Id; diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 1f2a985be58..45159c0e611 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -8197,9 +8197,9 @@ package body Sem_Ch8 is -- semantics of pragma Component_Alignment. if Scope_Stack.Last > Scope_Stack.First then - SST.Component_Alignment_Default := Scope_Stack.Table - (Scope_Stack.Last - 1). - Component_Alignment_Default; + SST.Component_Alignment_Default := + Scope_Stack.Table + (Scope_Stack.Last - 1). Component_Alignment_Default; -- Otherwise, this is the first scope being pushed on the scope -- stack. Inherit the component alignment from the configuration diff --git a/gcc/ada/sem_res.ads b/gcc/ada/sem_res.ads index e94c36bbb1f..0fd9f8d1d02 100644 --- a/gcc/ada/sem_res.ads +++ b/gcc/ada/sem_res.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2015, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2016, 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- -- @@ -47,34 +47,12 @@ package Sem_Res is -- Resolve routines also complete the semantic analysis, and call the -- expander for possible expansion of the completely type resolved node. - procedure Resolve (N : Node_Id; Typ : Entity_Id); - procedure Resolve (N : Node_Id; Typ : Entity_Id; Suppress : Check_Id); - -- Top level type-checking procedure, called in a complete context. The - -- construct N, which is a subexpression, has already been analyzed, and - -- is required to be of type Typ given the analysis of the context (which - -- uses the information gathered on the bottom up phase in Analyze). The - -- resolve routines do various other processing, e.g. static evaluation. - -- If a Suppress argument is present, then the resolution is done with the - -- specified check suppressed (can be All_Checks to suppress all checks). - - procedure Resolve (N : Node_Id); - -- A version of Resolve where the type to be used for resolution is - -- taken from the Etype (N). This is commonly used in cases where the - -- context does not add anything and the first pass of analysis found - -- the correct expected type. - - procedure Resolve_Discrete_Subtype_Indication - (N : Node_Id; - Typ : Entity_Id); - -- Resolve subtype indications in choices (case statements and - -- aggregates) and in index constraints. Note that the resulting Etype - -- of the subtype indication node is set to the Etype of the contained - -- range (i.e. an Itype is not constructed for the actual subtype). - - procedure Resolve_Entry (Entry_Name : Node_Id); - -- Find name of entry being called, and resolve prefix of name with its - -- own type. For now we assume that the prefix cannot be overloaded and - -- the name of the entry plays no role in the resolution. + procedure Ambiguous_Character (C : Node_Id); + -- Give list of candidate interpretations when a character literal cannot + -- be resolved, for example in a (useless) comparison such as 'A' = 'B'. + -- In Ada 95 the literals in question can be of type Character or Wide_ + -- Character. In Ada 2005 Wide_Wide_Character is also a candidate. The + -- node may also be overloaded with user-defined character types. procedure Analyze_And_Resolve (N : Node_Id); procedure Analyze_And_Resolve (N : Node_Id; Typ : Entity_Id); @@ -92,36 +70,58 @@ package Sem_Res is -- is not present, then the Etype of the expression after the Analyze -- call is used for the Resolve. - procedure Ambiguous_Character (C : Node_Id); - -- Give list of candidate interpretations when a character literal cannot - -- be resolved, for example in a (useless) comparison such as 'A' = 'B'. - -- In Ada 95 the literals in question can be of type Character or Wide_ - -- Character. In Ada 2005 Wide_Wide_Character is also a candidate. The - -- node may also be overloaded with user-defined character types. - procedure Check_Parameterless_Call (N : Node_Id); - -- Several forms of names can denote calls to entities without para- - -- meters. The context determines whether the name denotes the entity - -- or a call to it. When it is a call, the node must be rebuilt - -- accordingly and reanalyzed to obtain possible interpretations. + -- Several forms of names can denote calls to entities without parameters. + -- The context determines whether the name denotes the entity or a call to + -- it. When it is a call, the node must be rebuilt accordingly and + -- reanalyzed to obtain possible interpretations. -- -- The name may be that of an overloadable construct, or it can be an -- explicit dereference of a prefix that denotes an access to subprogram. -- In that case, we want to convert the name into a call only if the - -- context requires the return type of the subprogram. Finally, a + -- context requires the return type of the subprogram. Finally, a -- parameterless protected subprogram appears as a selected component. -- -- The parameter T is the Typ for the corresponding resolve call. procedure Preanalyze_And_Resolve (N : Node_Id; T : Entity_Id); - -- Performs a pre-analysis of expression node N. During pre-analysis, - -- N is analyzed and then resolved against type T, but no expansion - -- is carried out for N or its children. For more info on pre-analysis - -- read the spec of Sem. + -- Performs a pre-analysis of expression node N. During pre-analysis, N is + -- analyzed and then resolved against type T, but no expansion is carried + -- out for N or its children. For more info on pre-analysis read the spec + -- of Sem. procedure Preanalyze_And_Resolve (N : Node_Id); -- Same, but use type of node because context does not impose a single type + procedure Resolve (N : Node_Id; Typ : Entity_Id); + procedure Resolve (N : Node_Id; Typ : Entity_Id; Suppress : Check_Id); + -- Top-level type-checking procedure, called in a complete context. The + -- construct N, which is a subexpression, has already been analyzed, and + -- is required to be of type Typ given the analysis of the context (which + -- uses the information gathered on the bottom-up phase in Analyze). The + -- resolve routines do various other processing, e.g. static evaluation. + -- If a Suppress argument is present, then the resolution is done with the + -- specified check suppressed (can be All_Checks to suppress all checks). + + procedure Resolve (N : Node_Id); + -- A version of Resolve where the type to be used for resolution is taken + -- from the Etype (N). This is commonly used in cases where the context + -- does not add anything and the first pass of analysis found the correct + -- expected type. + + procedure Resolve_Discrete_Subtype_Indication + (N : Node_Id; + Typ : Entity_Id); + -- Resolve subtype indications in choices (case statements and aggregates) + -- and in index constraints. Note that the resulting Etype of the subtype_ + -- indication node is set to the Etype of the contained range (i.e. an + -- Itype is not constructed for the actual subtype). + + procedure Resolve_Entry (Entry_Name : Node_Id); + -- Find name of entry being called, and resolve prefix of name with its + -- own type. For now we assume that the prefix cannot be overloaded and + -- the name of the entry plays no role in the resolution. + function Valid_Conversion (N : Node_Id; Target : Entity_Id; @@ -137,7 +137,7 @@ package Sem_Res is private procedure Resolve_Implicit_Type (N : Node_Id) renames Resolve; pragma Inline (Resolve_Implicit_Type); - -- We use this renaming to make the application of Inline very explicit - -- to this version, since other versions of Resolve are not inlined. + -- We use this renaming to make the application of Inline very explicit to + -- this version, since other versions of Resolve are not inlined. end Sem_Res; diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index 01d9be531d3..659e989d0a4 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -5232,13 +5232,13 @@ package Sinfo is -- Acts_As_Spec (Flag4-Sem) -- Bad_Is_Detected (Flag15) used only by parser -- Do_Storage_Check (Flag17-Sem) + -- Has_Relative_Deadline_Pragma (Flag9-Sem) -- Is_Entry_Barrier_Function (Flag8-Sem) -- Is_Protected_Subprogram_Body (Flag7-Sem) -- Is_Task_Body_Procedure (Flag1-Sem) -- Is_Task_Master (Flag5-Sem) - -- Was_Originally_Stub (Flag13-Sem) - -- Has_Relative_Deadline_Pragma (Flag9-Sem) -- Was_Expression_Function (Flag18-Sem) + -- Was_Originally_Stub (Flag13-Sem) ------------------------- -- Expression Function -- |