From: charlet Date: Wed, 22 Apr 2009 10:42:35 +0000 (+0000) Subject: 2009-04-22 Robert Dewar X-Git-Tag: upstream/4.9.2~36548 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2f80f1db7d09ac7edc2daae61f213a41711c5d2d;p=platform%2Fupstream%2Flinaro-gcc.git 2009-04-22 Robert Dewar * sem_aggr.adb: Minor reformatting. * sem_type.adb: Minor reformatting 2009-04-22 Vincent Celier * prj-attr.adb: New single project level attribute Separate_Run_Path_Options. * prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process attribute Seperate_Run_Path_Options. * prj.ads: (Project_Configuration): New Boolean component Separate_Run_Path_Options, defaulted to False. * snames.ads-tmpl: New standard name Seperate_Run_Path_Options git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146563 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9c8c15d..bae8bef 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,20 @@ +2009-04-22 Vincent Celier + + * prj-attr.adb: New single project level attribute + Separate_Run_Path_Options. + + * prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process + attribute Seperate_Run_Path_Options. + + * prj.ads: (Project_Configuration): New Boolean component + Separate_Run_Path_Options, defaulted to False. + + * snames.ads-tmpl: New standard name Seperate_Run_Path_Options + 2009-04-22 Robert Dewar + * sem_type.adb: Minor reformatting + * mlib.adb: Minor reformatting * sem_aggr.adb: Minor reformatting. Defend against junk aggregate from diff --git a/gcc/ada/prj-attr.adb b/gcc/ada/prj-attr.adb index 81a611f..7d0ddea 100644 --- a/gcc/ada/prj-attr.adb +++ b/gcc/ada/prj-attr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2009, 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- -- @@ -112,6 +112,7 @@ package body Prj.Attr is "SVdefault_language#" & "LVrun_path_option#" & + "SVseparate_run_path_options#" & "Satoolchain_version#" & "Satoolchain_description#" & "Saobject_generated#" & diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 7349467..f0058c2 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -2155,6 +2155,24 @@ package body Prj.Nmsc is In_Tree => In_Tree); end if; + elsif Attribute.Name = Name_Separate_Run_Path_Options then + declare + pragma Unsuppress (All_Checks); + begin + Data.Config.Separate_Run_Path_Options := + Boolean'Value (Get_Name_String + (Attribute.Value.Value)); + exception + when Constraint_Error => + Error_Msg + (Project, + In_Tree, + "invalid value """ & + Get_Name_String (Attribute.Value.Value) & + """ for Separate_Run_Path_Options", + Attribute.Value.Location); + end; + elsif Attribute.Name = Name_Library_Support then declare pragma Unsuppress (All_Checks); diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads index aa8d88f..ff13932 100644 --- a/gcc/ada/prj.ads +++ b/gcc/ada/prj.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2009, 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- -- @@ -1004,6 +1004,10 @@ package Prj is -- The option to use when linking to specify the path where to look for -- libraries. + Separate_Run_Path_Options : Boolean := False; + -- True if each directory needs to be specified in a separate run path + -- option. + Executable_Suffix : Name_Id := No_Name; -- The suffix of executables, when specified in the configuration or in -- package Builder of the main project. When this is not specified, the @@ -1111,6 +1115,7 @@ package Prj is Default_Project_Config : constant Project_Configuration := (Target => No_Name, Run_Path_Option => No_Name_List, + Separate_Run_Path_Options => False, Executable_Suffix => No_Name, Linker => No_Path, Map_File_Option => No_Name, diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index 22557b7..86c74cf 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -134,8 +134,8 @@ package body Sem_Aggr is -- The algorithm of Resolve_Record_Aggregate proceeds as follows: -- -- 1. Make sure that the record type against which the record aggregate - -- has to be resolved is not abstract. Furthermore if the type is - -- a null aggregate make sure the input aggregate N is also null. + -- has to be resolved is not abstract. Furthermore if the type is a + -- null aggregate make sure the input aggregate N is also null. -- -- 2. Verify that the structure of the aggregate is that of a record -- aggregate. Specifically, look for component associations and ensure @@ -143,31 +143,29 @@ package body Sem_Aggr is -- node. Also make sure that if present, the N_Others_Choice occurs -- last and by itself. -- - -- 3. If Typ contains discriminants, the values for each discriminant - -- is looked for. If the record type Typ has variants, we check - -- that the expressions corresponding to each discriminant ruling - -- the (possibly nested) variant parts of Typ, are static. This - -- allows us to determine the variant parts to which the rest of - -- the aggregate must conform. The names of discriminants with their - -- values are saved in a new association list, New_Assoc_List which - -- is later augmented with the names and values of the remaining - -- components in the record type. + -- 3. If Typ contains discriminants, the values for each discriminant is + -- looked for. If the record type Typ has variants, we check that the + -- expressions corresponding to each discriminant ruling the (possibly + -- nested) variant parts of Typ, are static. This allows us to determine + -- the variant parts to which the rest of the aggregate must conform. + -- The names of discriminants with their values are saved in a new + -- association list, New_Assoc_List which is later augmented with the + -- names and values of the remaining components in the record type. -- -- During this phase we also make sure that every discriminant is - -- assigned exactly one value. Note that when several values - -- for a given discriminant are found, semantic processing continues - -- looking for further errors. In this case it's the first - -- discriminant value found which we will be recorded. + -- assigned exactly one value. Note that when several values for a given + -- discriminant are found, semantic processing continues looking for + -- further errors. In this case it's the first discriminant value found + -- which we will be recorded. -- -- IMPORTANT NOTE: For derived tagged types this procedure expects -- First_Discriminant and Next_Discriminant to give the correct list -- of discriminants, in the correct order. -- - -- 4. After all the discriminant values have been gathered, we can - -- set the Etype of the record aggregate. If Typ contains no - -- discriminants this is straightforward: the Etype of N is just - -- Typ, otherwise a new implicit constrained subtype of Typ is - -- built to be the Etype of N. + -- 4. After all the discriminant values have been gathered, we can set the + -- Etype of the record aggregate. If Typ contains no discriminants this + -- is straightforward: the Etype of N is just Typ, otherwise a new + -- implicit constrained subtype of Typ is built to be the Etype of N. -- -- 5. Gather the remaining record components according to the discriminant -- values. This involves recursively traversing the record type @@ -176,41 +174,40 @@ package body Sem_Aggr is -- derived tagged types since we need to retrieve the record structure -- of all the ancestors of Typ. -- - -- 6. After gathering the record components we look for their values - -- in the record aggregate and emit appropriate error messages - -- should we not find such values or should they be duplicated. + -- 6. After gathering the record components we look for their values in the + -- record aggregate and emit appropriate error messages should we not + -- find such values or should they be duplicated. -- - -- 7. We then make sure no illegal component names appear in the - -- record aggregate and make sure that the type of the record - -- components appearing in a same choice list is the same. - -- Finally we ensure that the others choice, if present, is - -- used to provide the value of at least a record component. + -- 7. We then make sure no illegal component names appear in the record + -- aggregate and make sure that the type of the record components + -- appearing in a same choice list is the same. Finally we ensure that + -- the others choice, if present, is used to provide the value of at + -- least a record component. -- - -- 8. The original aggregate node is replaced with the new named - -- aggregate built in steps 3 through 6, as explained earlier. + -- 8. The original aggregate node is replaced with the new named aggregate + -- built in steps 3 through 6, as explained earlier. -- - -- Given the complexity of record aggregate resolution, the primary - -- goal of this routine is clarity and simplicity rather than execution - -- and storage efficiency. If there are only positional components in the - -- aggregate the running time is linear. If there are associations - -- the running time is still linear as long as the order of the - -- associations is not too far off the order of the components in the - -- record type. If this is not the case the running time is at worst - -- quadratic in the size of the association list. + -- Given the complexity of record aggregate resolution, the primary goal of + -- this routine is clarity and simplicity rather than execution and storage + -- efficiency. If there are only positional components in the aggregate the + -- running time is linear. If there are associations the running time is + -- still linear as long as the order of the associations is not too far off + -- the order of the components in the record type. If this is not the case + -- the running time is at worst quadratic in the size of the association + -- list. procedure Check_Misspelled_Component (Elements : Elist_Id; Component : Node_Id); - -- Give possible misspelling diagnostic if Component is likely to be - -- a misspelling of one of the components of the Assoc_List. - -- This is called by Resolve_Aggr_Expr after producing - -- an invalid component error message. + -- Give possible misspelling diagnostic if Component is likely to be a + -- misspelling of one of the components of the Assoc_List. This is called + -- by Resolve_Aggr_Expr after producing an invalid component error message. procedure Check_Static_Discriminated_Subtype (T : Entity_Id; V : Node_Id); - -- An optimization: determine whether a discriminated subtype has a - -- static constraint, and contains array components whose length is also - -- static, either because they are constrained by the discriminant, or - -- because the original component bounds are static. + -- An optimization: determine whether a discriminated subtype has a static + -- constraint, and contains array components whose length is also static, + -- either because they are constrained by the discriminant, or because the + -- original component bounds are static. ----------------------------------------------------- -- Subprograms used for ARRAY AGGREGATE Processing -- diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index f9a4f1c..0cbce21 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2009, 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- -- @@ -57,12 +57,12 @@ package body Sem_Type is -- The following data structures establish a mapping between nodes and -- their interpretations. An overloaded node has an entry in Interp_Map, -- which in turn contains a pointer into the All_Interp array. The - -- interpretations of a given node are contiguous in All_Interp. Each - -- set of interpretations is terminated with the marker No_Interp. - -- In order to speed up the retrieval of the interpretations of an - -- overloaded node, the Interp_Map table is accessed by means of a simple - -- hashing scheme, and the entries in Interp_Map are chained. The heads - -- of clash lists are stored in array Headers. + -- interpretations of a given node are contiguous in All_Interp. Each set + -- of interpretations is terminated with the marker No_Interp. In order to + -- speed up the retrieval of the interpretations of an overloaded node, the + -- Interp_Map table is accessed by means of a simple hashing scheme, and + -- the entries in Interp_Map are chained. The heads of clash lists are + -- stored in array Headers. -- Headers Interp_Map All_Interp @@ -132,16 +132,15 @@ package body Sem_Type is -- Operator Overloading -- -------------------------- - -- The visibility of operators is handled differently from that of - -- other entities. We do not introduce explicit versions of primitive - -- operators for each type definition. As a result, there is only one - -- entity corresponding to predefined addition on all numeric types, etc. - -- The back-end resolves predefined operators according to their type. - -- The visibility of primitive operations then reduces to the visibility - -- of the resulting type: (a + b) is a legal interpretation of some - -- primitive operator + if the type of the result (which must also be - -- the type of a and b) is directly visible (i.e. either immediately - -- visible or use-visible.) + -- The visibility of operators is handled differently from that of other + -- entities. We do not introduce explicit versions of primitive operators + -- for each type definition. As a result, there is only one entity + -- corresponding to predefined addition on all numeric types, etc. The + -- back-end resolves predefined operators according to their type. The + -- visibility of primitive operations then reduces to the visibility of the + -- resulting type: (a + b) is a legal interpretation of some primitive + -- operator + if the type of the result (which must also be the type of a + -- and b) is directly visible (either immediately visible or use-visible). -- User-defined operators are treated like other functions, but the -- visibility of these user-defined operations must be special-cased diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index 2f4c6cc..60a91a3 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -6,7 +6,7 @@ -- -- -- T e m p l a t e -- -- -- --- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2009, 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- -- @@ -1116,6 +1116,7 @@ package Snames is Name_Roots : constant Name_Id := N + $; -- GPR Name_Required_Switches : constant Name_Id := N + $; Name_Run_Path_Option : constant Name_Id := N + $; + Name_Separate_Run_Path_Options : constant Name_Id := N + $; Name_Shared_Library_Minimum_Switches : constant Name_Id := N + $; Name_Shared_Library_Prefix : constant Name_Id := N + $; Name_Shared_Library_Suffix : constant Name_Id := N + $;