diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-12 13:43:38 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-12 13:43:38 +0000 |
commit | d67a83fef70d13b2d0d285c7e1b3294d77081432 (patch) | |
tree | feb483120b34ecb8aac08763b4b4a0ca89170d5f | |
parent | 0dd21164ba0588370c256d531ad45866a13fe9e7 (diff) | |
download | gcc-d67a83fef70d13b2d0d285c7e1b3294d77081432.tar.gz |
2011-12-12 Robert Dewar <dewar@adacore.com>
* sem_ch6.adb, gnatls.adb: Minor reformatting.
2011-12-12 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): If a type declared in a generic
context has predicates, generate a freeze node for it.
* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): If expression
has not been analyzed yet, entity has not been frozen, so analyze
it now.
2011-12-12 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Make_VM_TSD): Generate code
to store the value 'alignment in the TSD.
2011-12-12 Bob Duff <duff@adacore.com>
* s-taprop-mingw.adb (Yield): Do not delay 1 millisecond in Annex D
mode.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182240 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 22 | ||||
-rw-r--r-- | gcc/ada/exp_disp.adb | 8 | ||||
-rw-r--r-- | gcc/ada/freeze.adb | 5 | ||||
-rw-r--r-- | gcc/ada/gnatls.adb | 1 | ||||
-rw-r--r-- | gcc/ada/s-taprop-mingw.adb | 20 | ||||
-rw-r--r-- | gcc/ada/sem_ch13.adb | 6 | ||||
-rw-r--r-- | gcc/ada/sem_ch6.adb | 5 |
7 files changed, 43 insertions, 24 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a3679ddbbdc..430170d59d2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,25 @@ +2011-12-12 Robert Dewar <dewar@adacore.com> + + * sem_ch6.adb, gnatls.adb: Minor reformatting. + +2011-12-12 Ed Schonberg <schonberg@adacore.com> + + * freeze.adb (Freeze_Entity): If a type declared in a generic + context has predicates, generate a freeze node for it. + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): If expression + has not been analyzed yet, entity has not been frozen, so analyze + it now. + +2011-12-12 Javier Miranda <miranda@adacore.com> + + * exp_disp.adb (Make_VM_TSD): Generate code + to store the value 'alignment in the TSD. + +2011-12-12 Bob Duff <duff@adacore.com> + + * s-taprop-mingw.adb (Yield): Do not delay 1 millisecond in Annex D + mode. + 2011-12-12 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb (Expand_N_Allocator): Update the master of an diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index bd6724fdb54..a1bd6a425ea 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -6458,6 +6458,7 @@ package body Exp_Disp is -- (Idepth => I_Depth, -- Tag_Kind => <tag_kind-value>, -- Access_Level => Type_Access_Level (Typ), + -- Alignment => Typ'Alignment, -- HT_Link => null, -- Type_Is_Abstract => <<boolean-value>>, -- Type_Is_Library_Level => <<boolean-value>>, @@ -6508,6 +6509,13 @@ package body Exp_Disp is Append_To (TSD_Aggr_List, Make_Integer_Literal (Loc, Type_Access_Level (Typ))); + -- Alignment + + Append_To (TSD_Aggr_List, + Make_Attribute_Reference (Loc, + Prefix => New_Reference_To (Typ, Loc), + Attribute_Name => Name_Alignment)); + -- HT_Link Append_To (TSD_Aggr_List, diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 336825ea91e..46d3c64fd90 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -3040,8 +3040,13 @@ package body Freeze is -- nable and used in subsequent checks, so might as well try to -- compute it. + -- In Ada2012, freeze entities is also used in the front-end to + -- trigger the analysis of aspect expressions, so in this case we + -- want to continue the freezing process. + if Present (Scope (E)) and then Is_Generic_Unit (Scope (E)) + and then not Has_Predicates (E) then Check_Compile_Time_Size (E); return No_List; diff --git a/gcc/ada/gnatls.adb b/gcc/ada/gnatls.adb index 91b84a17300..a7c276d58b3 100644 --- a/gcc/ada/gnatls.adb +++ b/gcc/ada/gnatls.adb @@ -1232,6 +1232,7 @@ procedure Gnatls is -- Add the lib subdirectory if it exists Lib_Path := Get_RTS_Search_Dir (Name, Objects); + if Lib_Path /= null then Add_Search_Dirs (Lib_Path, Objects); end if; diff --git a/gcc/ada/s-taprop-mingw.adb b/gcc/ada/s-taprop-mingw.adb index 7fc505e30bc..5ced0315e7b 100644 --- a/gcc/ada/s-taprop-mingw.adb +++ b/gcc/ada/s-taprop-mingw.adb @@ -126,9 +126,6 @@ package body System.Task_Primitives.Operations is Foreign_Task_Elaborated : aliased Boolean := True; -- Used to identified fake tasks (i.e., non-Ada Threads) - Annex_D : Boolean := False; - -- Set to True if running with Annex-D semantics - Null_Thread_Id : constant Thread_Id := 0; -- Constant to indicate that the thread identifier has not yet been -- initialized. @@ -700,20 +697,9 @@ package body System.Task_Primitives.Operations is ----------- procedure Yield (Do_Yield : Boolean := True) is + pragma Unreferenced (Do_Yield); begin - if Do_Yield then - SwitchToThread; - - elsif Annex_D then - -- If running with Annex-D semantics we need a delay - -- above 0 milliseconds here otherwise processes give - -- enough time to the other tasks to have a chance to - -- run. - -- - -- This makes cxd8002 ACATS pass on Windows. - - Sleep (1); - end if; + SwitchToThread; end Yield; ------------------ @@ -1076,8 +1062,6 @@ package body System.Task_Primitives.Operations is Discard := OS_Interface.SetPriorityClass (GetCurrentProcess, Realtime_Priority_Class); - - Annex_D := True; end if; TlsIndex := TlsAlloc; diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index d06ba9388ac..309d2d2ac1b 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -5880,11 +5880,11 @@ package body Sem_Ch13 is -- All other cases else - -- In a generic context freeze nodes are not generated, and the - -- aspect expressions have not been preanalyzed, so do it now. + -- In a generic context the aspect expressions have not been + -- preanalyzed, so do it now. -- There are no conformance checks to perform in this case. - if No (T) and then Inside_A_Generic then + if No (T) then Check_Aspect_At_Freeze_Point (ASN); return; else diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 64b90926329..92c5eed8de1 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -367,8 +367,8 @@ package body Sem_Ch6 is -- on later entities. declare - Decls : List_Id := List_Containing (N); - Par : constant Node_Id := Parent (Decls); + Decls : List_Id := List_Containing (N); + Par : constant Node_Id := Parent (Decls); Id : constant Entity_Id := Defining_Entity (New_Decl); begin @@ -385,7 +385,6 @@ package body Sem_Ch6 is Install_Formals (Id); Preanalyze_Spec_Expression (Expression (Ret), Etype (Id)); End_Scope; - end; end if; |