diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-17 14:58:17 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-17 14:58:17 +0000 |
commit | ea61a7eac2bd83ab4f8831935cc59f90ea601eb3 (patch) | |
tree | d4fd4202c674dfd74d652a50e82fd804b0e87ffc /gcc/ada/sem_ch12.adb | |
parent | e58f120a098cf37e5b025eaf2152de3363e0b0f6 (diff) | |
download | gcc-ea61a7eac2bd83ab4f8831935cc59f90ea601eb3.tar.gz |
2003-11-17 Jerome Guitton <guitton@act-europe.fr>
* 5zthrini.adb: Remove the call to Init_RTS at elaboration, as it is
already called in System.Threads.
* 5ztiitho.adb (Initialize_Task_Hooks): Remove the registration of the
environment task, as it has been moved to System.Threads.Initialization.
2003-11-17 Arnaud Charlet <charlet@act-europe.fr>
* adaint.c (__gnatlib_install_locks): Only reference
__gnat_install_locks on VMS, since other platforms can avoid using
--enable-threads=gnat
2003-11-17 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* ada-tree.h: (TYPE_IS_PACKED_ARRAY_TYPE_P): New macro.
* decl.c (gnat_to_gnu_entity, case E_Array_Subtype): Set
TYPE_PACKED_ARRAY_TYPE_P.
(validate_size): Do not verify size if TYPE_IS_PACKED_ARRAY_TYPE_P.
Part of PR ada/12806
* utils.c (float_type_for_precision): Renamed from float_type_for_size.
Use GET_MODE_PRECISION instead of GET_MODE_BITSIZE.
2003-11-17 Vincent Celier <celier@gnat.com>
* gnatchop.adb (Error_Msg): New Boolean parameter Warning, defaulted
to False.
Do not set exit status to Failure when Warning is True.
(Gnatchop): Make errors "no compilation units found" and
"no source files written" warnings only.
* make.adb (Gnatmake): When using a project file, set
Look_In_Primary_Dir to False.
(Configuration_Pragmas_Switch): Check for Global_Configuration_Pragmas
and Local_Configuration_Pragmas in the project where they are declared
not an extending project which might have inherited them.
* osint.adb (Locate_File): If Name is already an absolute path, do not
look for a directory.
* par-ch10.adb (P_Compilation_Unit): If source contains no token, and
-gnats (Check_Syntax) is used, issue only a warning, not an error.
* prj.adb (Register_Default_Naming_Scheme): Add new component Project
in objects of type Variable_Value.
* prj.ads: (Variable_Value): New component Project
* prj-nmsc.adb (Ada_Check.Warn_If_Not_Sources): No warning if source
is in a project extended by Project.
* prj-proc.adb (Add_Attributes): New parameter Project. Set component
Project of Variable_Values to this new parameter value.
(Expression): Set component Project of Variable_Values.
(Process_Declarative_Items): Call Add_Attributes with parameter Project.
Set the component Project in array elements.
2003-11-17 Sergey Rybin <rybin@act-europe.fr>
* errout.adb: (Initialize): Add initialization for error nodes.
* sem_ch12.adb (Initialize): Add missing initializations for
Exchanged_Views and Hidden_Entities.
2003-11-17 Ed Schonberg <schonberg@gnat.com>
* sem_ch12.adb (Copy_Generic_Node): Preserve entity when copying an
already instantiated tree for use in subsequent inlining.
(Analyze_Associations, Instantiate_Formal_Subprogram,
Instantiate_Object): improve error message for mismatch in
instantiations.
* sem_ch6.adb (Build_Body_To_Inline): Major cleanup to handle
instantiations of subprograms declared in instances.
2003-11-17 Javier Miranda <miranda@gnat.com>
* sem_ch4.adb (Analyze_Allocator): Previous modification must be
executed only under the Extensions_Allowed flag.
2003-11-17 Robert Dewar <dewar@gnat.com>
* a-exexda.adb (Address_Image): Fix documentation to indicate leading
zeroes suppressed.
(Address_Image): Fix bug of returning 0x instead of 0x0
Minor reformatting (function specs).
* einfo.ads: Minor fix for documentation of Is_Bit_Packed_Array
(missed case of 33-63)
* freeze.adb, sem_ch13.adb: Properly check size of packed bit array
* s-thread.adb: Add comments for pragma Restriction
* exp_aggr.adb, g-debuti.adb, par-ch4.adb, sem_aggr.adb,
sem_ch6.adb, sprint.adb, xref_lib.adb: Minor reformatting
2003-11-17 Ed Falis <falis@gnat.com>
* s-thread.adb: Added No_Tasking restriction for this implementation.
2003-11-17 Emmanuel Briot <briot@act-europe.fr>
* xref_lib.adb (Parse_Identifier_Info): Add handling of generic
instanciation references in the parent type description.
2003-11-17 GNAT Script <nobody@gnat.com>
* Make-lang.in: Makefile automatically updated
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73672 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch12.adb')
-rw-r--r-- | gcc/ada/sem_ch12.adb | 92 |
1 files changed, 68 insertions, 24 deletions
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 4a954a1dc4b..babcc70eda6 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -757,9 +757,11 @@ package body Sem_Ch12 is F_Copy : List_Id) return List_Id is - Actual_Types : constant Elist_Id := New_Elmt_List; - Assoc : constant List_Id := New_List; - Defaults : constant Elist_Id := New_Elmt_List; + Actual_Types : constant Elist_Id := New_Elmt_List; + Assoc : constant List_Id := New_List; + Defaults : constant Elist_Id := New_Elmt_List; + Gen_Unit : constant Entity_Id := Defining_Entity + (Parent (F_Copy)); Actuals : List_Id; Actual : Node_Id; Formal : Node_Id; @@ -985,8 +987,11 @@ package body Sem_Ch12 is Defining_Identifier (Analyzed_Formal)); if No (Match) then - Error_Msg_NE ("missing actual for instantiation of &", - Instantiation_Node, Defining_Identifier (Formal)); + Error_Msg_NE + ("missing actual&", + Instantiation_Node, Defining_Identifier (Formal)); + Error_Msg_NE ("\in instantiation of & declared#", + Instantiation_Node, Gen_Unit); Abandon_Instantiation (Instantiation_Node); else @@ -1071,9 +1076,10 @@ package body Sem_Ch12 is if No (Match) then Error_Msg_NE - ("missing actual for instantiation of&", - Instantiation_Node, - Defining_Identifier (Formal)); + ("missing actual&", + Instantiation_Node, Defining_Identifier (Formal)); + Error_Msg_NE ("\in instantiation of & declared#", + Instantiation_Node, Gen_Unit); Abandon_Instantiation (Instantiation_Node); @@ -1105,8 +1111,17 @@ package body Sem_Ch12 is end loop; if Num_Actuals > Num_Matched then - Error_Msg_N - ("unmatched actuals in instantiation", Instantiation_Node); + if Present (Selector_Name (Actual)) then + Error_Msg_NE + ("unmatched actual&", + Actual, Selector_Name (Actual)); + Error_Msg_NE ("\in instantiation of& declared#", + Actual, Gen_Unit); + else + Error_Msg_NE + ("unmatched actual in instantiation of& declared#", + Actual, Gen_Unit); + end if; end if; elsif Present (Actuals) then @@ -4641,19 +4656,37 @@ package body Sem_Ch12 is else -- If the associated node is still defined, the entity in -- it is global, and must be copied to the instance. + -- If this copy is being made for a body to inline, it is + -- applied to an instantiated tree, and the entity is already + -- present and must be also preserved. - if Present (Get_Associated_Node (N)) then - if Nkind (Get_Associated_Node (N)) = Nkind (N) then - Set_Entity (New_N, Entity (Get_Associated_Node (N))); - Check_Private_View (N); + declare + Assoc : constant Node_Id := Get_Associated_Node (N); + begin + if Present (Assoc) then + if Nkind (Assoc) = Nkind (N) then + Set_Entity (New_N, Entity (Assoc)); + Check_Private_View (N); + + elsif Nkind (Assoc) = N_Function_Call then + Set_Entity (New_N, Entity (Name (Assoc))); + + elsif (Nkind (Assoc) = N_Defining_Identifier + or else Nkind (Assoc) = N_Defining_Character_Literal + or else Nkind (Assoc) = N_Defining_Operator_Symbol) + and then Expander_Active + then + -- Inlining case: we are copying a tree that contains + -- global entities, which are preserved in the copy + -- to be used for subsequent inlining. - elsif Nkind (Get_Associated_Node (N)) = N_Function_Call then - Set_Entity (New_N, Entity (Name (Get_Associated_Node (N)))); + null; - else - Set_Entity (New_N, Empty); + else + Set_Entity (New_N, Empty); + end if; end if; - end if; + end; end if; -- For expanded name, we must copy the Prefix and Selector_Name @@ -5618,6 +5651,8 @@ package body Sem_Ch12 is Generic_Flags.Init; Generic_Renamings_HTable.Reset; Circularity_Detected := False; + Exchanged_Views := No_Elist; + Hidden_Entities := No_Elist; end Initialize; ---------------------------- @@ -6586,8 +6621,10 @@ package body Sem_Ch12 is else Error_Msg_NE - ("missing actual for instantiation of &", - Instantiation_Node, Formal_Sub); + ("missing actual&", Instantiation_Node, Formal_Sub); + Error_Msg_NE + ("\in instantiation of & declared#", + Instantiation_Node, Scope (Analyzed_S)); Abandon_Instantiation (Instantiation_Node); end if; @@ -6729,8 +6766,12 @@ package body Sem_Ch12 is if No (Actual) then Error_Msg_NE - ("missing actual for instantiation of &", + ("missing actual&", Instantiation_Node, Formal_Id); + Error_Msg_NE + ("\in instantiation of & declared#", + Instantiation_Node, + Scope (Defining_Identifier (Analyzed_Formal))); Abandon_Instantiation (Instantiation_Node); end if; @@ -6893,8 +6934,11 @@ package body Sem_Ch12 is else Error_Msg_NE - ("missing actual for instantiation of &", - Instantiation_Node, Formal_Id); + ("missing actual&", + Instantiation_Node, Formal_Id); + Error_Msg_NE ("\in instantiation of & declared#", + Instantiation_Node, + Scope (Defining_Identifier (Analyzed_Formal))); if Is_Scalar_Type (Etype (Defining_Identifier (Analyzed_Formal))) |