diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-15 12:28:02 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-15 12:28:02 +0200 |
commit | b9ec846384e6908fe4d9aff0703c5ae320d3f366 (patch) | |
tree | 1e35ec4a8dd55cd03b45f7e01b0963336d4a641c /gcc/ada | |
parent | 24f161fddabfaae005e73795c676b2701ecbef60 (diff) | |
download | gcc-b9ec846384e6908fe4d9aff0703c5ae320d3f366.zip gcc-b9ec846384e6908fe4d9aff0703c5ae320d3f366.tar.gz gcc-b9ec846384e6908fe4d9aff0703c5ae320d3f366.tar.bz2 |
[multiple changes]
2013-10-15 Tristan Gingold <gingold@adacore.com>
* adaint.c (__gnat_get_executable_load_address): Remove AIX
specific code.
2013-10-15 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Aggr_Size_OK): Refine criteria to better handle
large static aggregates with static record components, to avoid
generating a large number of asignments. Conversely, improve
handling of aggregates initialized by a single association,
which are most efficiently implemented with a loop.
2013-10-15 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Analyze_Input_Item): Emit an
error when the input item comes from the related package.
2013-10-15 Arnaud Charlet <charlet@adacore.com>
* exp_ch11.adb (Expand_Exception_Handlers): Restrict previous
change.
From-SVN: r203593
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 23 | ||||
-rw-r--r-- | gcc/ada/adaint.c | 24 | ||||
-rw-r--r-- | gcc/ada/exp_aggr.adb | 13 | ||||
-rw-r--r-- | gcc/ada/exp_ch11.adb | 3 | ||||
-rw-r--r-- | gcc/ada/sem_prag.adb | 4 |
5 files changed, 38 insertions, 29 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e9fe2cd..ac5cbb6 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,26 @@ +2013-10-15 Tristan Gingold <gingold@adacore.com> + + * adaint.c (__gnat_get_executable_load_address): Remove AIX + specific code. + +2013-10-15 Ed Schonberg <schonberg@adacore.com> + + * exp_aggr.adb (Aggr_Size_OK): Refine criteria to better handle + large static aggregates with static record components, to avoid + generating a large number of asignments. Conversely, improve + handling of aggregates initialized by a single association, + which are most efficiently implemented with a loop. + +2013-10-15 Hristian Kirtchev <kirtchev@adacore.com> + + * sem_prag.adb (Analyze_Input_Item): Emit an + error when the input item comes from the related package. + +2013-10-15 Arnaud Charlet <charlet@adacore.com> + + * exp_ch11.adb (Expand_Exception_Handlers): Restrict previous + change. + 2013-10-14 Tristan Gingold <gingold@adacore.com> * gcc-interface/gigi.h (standard_datatypes): Add diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index e447907..3cabec9 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -3953,8 +3953,6 @@ __gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set) #include <mach-o/dyld.h> #elif 0 && defined (__linux__) #include <link.h> -#elif defined (_AIX) -#include <sys/ldr.h> #endif const void * @@ -3969,28 +3967,6 @@ __gnat_get_executable_load_address (void) return (const void *)map->l_addr; -#elif defined (_AIX) - /* Unfortunately, AIX wants to return the info for all loaded objects, - so we need to increase the buffer if too small. */ - size_t blen = 4096; - int status; - - while (1) - { - char buf[blen]; - - status = loadquery (L_GETINFO, buf, blen); - if (status == 0) - { - struct ld_info *info = (struct ld_info *)buf; - return info->ldinfo_textorg; - } - blen = blen * 2; - - /* Avoid stack overflow. */ - if (blen > 40 * 1024) - return (const void *)-1; - } #else return NULL; #endif diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index e58e5b2..9d72485 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -376,7 +376,7 @@ package body Exp_Aggr is -- Start of processing for Aggr_Size_OK begin - -- The normal aggregate limit is 5000, but we increase this limit to + -- The normal aggregate limit is 50000, but we increase this limit to -- 2**24 (about 16 million) if Restrictions (No_Elaboration_Code) or -- Restrictions (No_Implicit_Loops) is specified, since in either case -- we are at risk of declaring the program illegal because of this @@ -389,10 +389,14 @@ package body Exp_Aggr is -- efficient to construct a one-dimensional equivalent array with static -- components. + -- Conversely, we decrease the maximum size if none of the above + -- requirements apply, and if the aggregate has a single component + -- association, which will be more efficient if implemented with a loop. + -- Finally, we use a small limit in CodePeer mode where we favor loops -- instead of thousands of single assignments (from large aggregates). - Max_Aggr_Size := 5000; + Max_Aggr_Size := 50000; if CodePeer_Mode then Max_Aggr_Size := 100; @@ -404,6 +408,11 @@ package body Exp_Aggr is and then Static_Elaboration_Desired (Current_Scope))) then Max_Aggr_Size := 2 ** 24; + + elsif No (Expressions (N)) + and then No (Next (First (Component_Associations (N)))) + then + Max_Aggr_Size := 5000; end if; Siz := Component_Count (Component_Type (Typ)); diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index c5abb22..90628a0 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -1029,7 +1029,8 @@ package body Exp_Ch11 is -- will insert a call to initialize the choice parameter. if Present (Choice_Parameter (Handler)) - and then Exception_Mechanism /= Back_End_Exceptions + and then (Exception_Mechanism /= Back_End_Exceptions + or else CodePeer_Mode) then declare Cparm : constant Entity_Id := Choice_Parameter (Handler); diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 69df175..9e0d2ed 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -2353,9 +2353,9 @@ package body Sem_Prag is if Ekind_In (Input_Id, E_Abstract_State, E_Variable) then -- The input cannot denote states or variables declared - -- within the visible declarations of the package. + -- within the related package. - if Contains (States_And_Vars, Input_Id) then + if In_Same_Code_Unit (Item, Input) then Error_Msg_Name_1 := Chars (Pack_Id); Error_Msg_NE ("input item & cannot denote a visible variable or " |